पहली पंक्ति में आपने जो लिखा है, वह एक पूर्ण कमांड (शेल शब्दावली में "(कंपाउंड) सूची") की तरह दिखता है, इसलिए शेल इसे पूरी कमांड के रूप में मानता है। चूँकि यहाँ एक दस्तावेज़-आरंभ मार्कर है ( <<END), शेल तब यहाँ-दस्तावेज़ सामग्री पढ़ता है, और फिर एक नया कमांड शुरू होता है। यदि आप यहाँ-दस्तावेज़ को एक सूची के बीच में रखना चाहते हैं, तो आपको शेल को इंगित करने की आवश्यकता है कि सूची समाप्त नहीं हुई है। यहाँ कुछ तरीके हैं।
mpirun -np 6 ./laplace <<END |
…
END
tail -n 1 > output
{ mpirun -np 6 ./laplace <<END
…
END
} | tail -n 1 > output
या, ज़ाहिर है, आप यह सुनिश्चित कर सकते हैं कि कमांड पूरी तरह से पहली पंक्ति में फिट बैठता है।
mpirun -np 6 ./laplace <<END | tail -n 1 > output
…
END
यह याद रखने का नियम यह है कि यहां दस्तावेज़ की सामग्री <<ENDसंकेतक के बाद पहली बार रेखांकित की गई नई रेखा के बाद शुरू होती है । उदाहरण के लिए, यहां इस स्क्रिप्ट को लिखने का एक और अस्पष्ट तरीका है:
mpirun -np 6 ./laplace <<END \
| tail -n $(
…
END
echo 1) > output