हाँ, POSIX मानक इस अनुमति देता है। According to the 2008 version:
यहाँ-दस्तावेज़ एक शब्द है कि अगले <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 */
तो एक पाइप प्रतीक एक अंत के बाद किया जा सकता है ऑफलाइन और अभी भी एक पाइपलाइन का हिस्सा माना जाता है।
स्रोत
2011-08-12 22:21:20
मैं इस एकाधिक पंक्तियों में विभाजित की एक अच्छा तरीका खोजने के लिए यहां आया था: आर्ग के बहुत सारे << EOF के साथ 'बड़े लंबे समय से है command1 | बहुत सारे तर्कों के साथ बड़े-लंबे कमांड 2। "विषम वाक्यविन्यास" सबसे अच्छा तरीका लगता है। – PaulC
इसके लिए एक सुविधाजनक उपयोग केस तब होता है जब आप किसी तालिका को कनवर्ट करने का प्रयास कर रहे हैं, जो कि टैब-डिलीमिट किए गए स्थान में सीमित है ताकि आप इसे Google स्प्रेडशीट में पेस्ट कर सकें। आपको एक अस्थायी फ़ाइल नहीं बनाना पड़ेगा। –
पहला व्यक्ति जेड-शैल में मेरे लिए काम नहीं करता था। मुझे दूसरा पसंद नहीं है क्योंकि यह | कमांड से, खोल पाइपलाइनों की मूर्खता (?) खोना। –