Bash
使用 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
我該如何解決?
here-document 的結束分隔符必須是該行的第一件事:
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-document 的每一行中刪除所有初始製表符(不是空格)。這也允許您縮進結束分隔符,如上所示。另請注意,如果要擴展 here-document 中的變數,則不應引用 here-document 分隔符。