EOT를 사용하여 파일에 여러 줄을 쓰고 싶지만 다음 스크립트는 다음과 같습니다.
#!/bin/bash
bench="X"
file_name="submit2.sh"
ids=(55)
for id in "${arrayName[@]}"; do
cat <<'EOT' >> $bench/$file_name
#!/bin/bash -l
#PBS -l nodes=1:ppn=1
echo $id
EOT
done # line 11
이 오류가 발생합니다
line 11: warning: here-document at line 6 delimited by end-of-file (wanted `EOT')
line 12: syntax error: unexpected end of file
이 문제를 어떻게 해결할 수 있나요?
답변1
여기서 문서의 닫는 구분 기호는 줄의 첫 번째 줄이어야 합니다.
for ...; do
cat <<END_SUBMIT_SCRIPT
#!/bin/bash
...
...
END_SUBMIT_SCRIPT
done
커밋 스크립트를 생성하는 스크립트에서 줄을 들여쓰려면 줄 시작 부분에 리터럴 탭을 사용하고 <<-DELIMITER
를 사용하여 리디렉션합니다.
for ...; do
cat <<-END_SCRIPT
#!/bin/bash
...
...
END_SCRIPT
done
-
in을 사용하면 여기 문서의 모든 줄에서 모든 초기 탭 문자(공백 아님)가 제거됩니다 <<-
. 또한 위에 표시된 대로 닫는 구분 기호를 들여쓸 수 있습니다.
또한 here 문서에서 변수를 확장하려는 경우 here 문서 구분 기호를 인용하면 안 됩니다.