我想使用 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将会导致所有初始制表符(不是空格)从此处文档的每一行-
中<<-
删除。这还允许您缩进结束分隔符,如上所示。
另请注意,如果要扩展此处文档中的变量,则不应引用此处文档分隔符。