EOT를 사용하여 파일의 여러 줄을 에코합니다.

EOT를 사용하여 파일의 여러 줄을 에코합니다.

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 문서 구분 기호를 인용하면 안 됩니다.

관련 정보