답변:
첫 번째 줄에 작성한 내용은 완전한 명령 (쉘 용어의 "(복합) 목록")처럼 보이므로 쉘은이를 완전한 명령으로 취급합니다. 여기 문서 시작 마커 ( <<END)가 있으므로 쉘은 여기 문서 내용을 읽고 새 명령을 시작합니다. here 문서를 목록 중간에 넣으려면 목록이 완료되지 않았 음을 쉘에 표시해야합니다. 몇 가지 방법이 있습니다.
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
<<END비트 이후 다음 줄 바꿈 토큰에 연결된 단일 토큰과 같습니다 . 백 슬래시-개행은 개행을 무효화합니다.