हां, POSIX मानक इसकी अनुमति देता है। 2008 के संस्करण के अनुसार:
यहां दस्तावेज़ को एक एकल शब्द के रूप में माना जाएगा जो अगले के बाद शुरू होता है <newline>
और तब तक जारी रहता है जब तक कि कोई रेखा नहीं होती है जिसमें केवल सीमांकक और ए होता है <newline>
, जिसके <blank>
बीच कोई वर्ण नहीं होता है। फिर अगला यहाँ-दस्तावेज़ शुरू होता है, अगर वहाँ एक है।
और एक ही पंक्ति में कई "यहाँ-दस्तावेज़" का यह उदाहरण शामिल है:
cat <<eof1; cat <<eof2
Hi,
eof1
Helene.
eof2
इसलिए पुनर्निर्देश या पाइप करने में कोई समस्या नहीं है। आपका उदाहरण कुछ इस तरह है:
cat file |
cmd
और शेल व्याकरण (लिंक पेज पर और नीचे) में ये परिभाषाएँ शामिल हैं:
pipe_sequence : command
| pipe_sequence '|' linebreak command
newline_list : NEWLINE
| newline_list NEWLINE
;
linebreak : newline_list
| /* empty */
तो एक पाइप प्रतीक का अंत-लाइन द्वारा पीछा किया जा सकता है और अभी भी एक पाइपलाइन का हिस्सा माना जा सकता है।
big-long-command1 with lots of args << EOF | big-long-command2 with lots of args
:। "विषम सिंटैक्स" सबसे अच्छा तरीका लगता है।