यह शेल पर निर्भर है और AFAICS का दस्तावेज नहीं है। में 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पढ़ता है जबकि दूसरे को पढ़ता है।
इसके साथ zsh, इसे बाहरी स्टड मिलता है (जब तक कि यह टर्मिनल नहीं है और शेल इंटरएक्टिव नहीं है, जिस स्थिति में यह पुनर्निर्देशित है /dev/null)। ksh(जहां इसकी उत्पत्ति हुई), zshऔर bashप्रक्रिया प्रतिस्थापन AFAIK के समर्थन के साथ एकमात्र बॉर्न-जैसे गोले हैं।
में echo "bla" | bar < <(foo), ध्यान दें कि barस्टड के आउटपुट द्वारा खिलाया जाने वाला पाइप होगा foo। यह अच्छी तरह से परिभाषित व्यवहार है। उस स्थिति में, ऐसा प्रतीत होता है कि fooस्टड वह पाइप है 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।