Những gì bạn đã viết trong dòng đầu tiên trông giống như một lệnh hoàn chỉnh (một danh sách (hợp chất) liệt kê trong thuật ngữ shell), vì vậy shell này coi nó như một lệnh hoàn chỉnh. Vì có một điểm đánh dấu bắt đầu tài liệu ở đây ( <<END
), trình bao sau đó đọc nội dung tài liệu ở đây và sau đó bắt đầu một lệnh mới. Nếu bạn muốn đặt tài liệu ở đây vào giữa danh sách, bạn cần chỉ ra cho trình bao rằng danh sách chưa kết thúc. Dưới đây là một số cách.
mpirun -np 6 ./laplace <<END |
…
END
tail -n 1 > output
{ mpirun -np 6 ./laplace <<END
…
END
} | tail -n 1 > output
Hoặc, tất nhiên, bạn có thể chắc chắn rằng lệnh hoàn toàn phù hợp trong dòng đầu tiên.
mpirun -np 6 ./laplace <<END | tail -n 1 > output
…
END
Quy tắc cần nhớ là nội dung tài liệu ở đây bắt đầu sau dòng mới không được trích dẫn đầu tiên sau <<END
chỉ báo. Ví dụ, đây là một cách khác để viết kịch bản này:
mpirun -np 6 ./laplace <<END \
| tail -n $(
…
END
echo 1) > output