এটি শেল নির্ভর এবং নথিভুক্ত নয় এএএএফসিএস। ইন ksh
এবং bash
, প্রথম ক্ষেত্রে, foo
হিসাবে একই stdin ভাগ করবে bar
। তারা আউটপুট জন্য লড়াই করবে echo
।
সুতরাং উদাহরণস্বরূপ,
$ seq 10000 | paste - <(tr 1 X)'
1 X
2 X042
3 X043
4 X044
5 X045
[...]
আপনি প্রমাণগুলি দেখতে পান যা paste
পাঠ্যের প্রতিটি ব্লককে seq
আউটপুট থেকে অন্য পাঠ করে tr
reads
এর সাহায্যে zsh
এটি বাহ্যিক স্টিডিন পায় (যদি এটি টার্মিনাল না হয় এবং শেলটি ইন্টারেক্টিভ না হয় তবে এটির থেকে পুনঃনির্দেশিত হয় /dev/null
)। ksh
(যেখানে এটি উদ্ভূত হয়েছিল), zsh
এবং bash
প্রক্রিয়া প্রতিস্থাপন AFAIK এর সমর্থন সহ একমাত্র বোর্নের মতো শেল।
ইন echo "bla" | bar < <(foo)
, নোট করুন যে bar
এর স্টিডিন হ'ল পাইপ হবে আউটপুট দ্বারা খাওয়ানো foo
। এটি ভালভাবে সংজ্ঞায়িত আচরণ। সেক্ষেত্রে, এটা মনে হয় যে foo
এর stdin নল দ্বারা খাওয়ানো হয় echo
সব ksh
, zsh
এবং bash
।
যদি আপনি তিনটি শাঁস জুড়ে সামঞ্জস্যপূর্ণ আচরণ করতে চান এবং ভবিষ্যত-প্রমাণ হতে চান যেহেতু নথিবদ্ধ না হওয়ায় আচরণটি পরিবর্তিত হতে পারে, তবে আমি এটি লিখব:
echo bla | { bar <(foo); }
নিশ্চিত হওয়ার জন্য যে foo
স্টিডিন হ'ল পাইপও echo
(আমি দেখতে পাচ্ছি না কেন আপনি এটি করতে চাইছেন)। বা:
echo bla | bar <(foo < /dev/null)
পাইপ থেকে পড়া নাfoo
হয় তা নিশ্চিত করার জন্য echo
। বা:
{ echo bla | bar 3<&- <(foo <&3); } 3<&0
আছে foo
'বর্তমান সংস্করণে মত বাইরের stdin stdin গুলি zsh
।