从bash脚本编写bash脚本。线条没有解释

时间:2016-07-28 10:11:04

标签: bash heredoc

我想从bash脚本创建一个bash脚本。使用旧的echo样式(示例echo -e“some commands”> /path/to/file.sh)执行此操作的问题是命令被解释并由其值替换。

谷歌搜索我在这个论坛上找到了这个解决方案: Generating a bash script from a bash script

在那里,他们使用:

cat >/path/to/file.sh <<'EOF'
    some commands
EOF

如果我只用这个做一个迷你脚本,它可以工作......问题是在尝试集成我的大脚本时...用一个非常基本的“一些命令”......它会产生一个错误:< / p>

警告:here-document在xxxx行以文件结尾分隔(想要'EOF')./ myscript.sh:line xxxx:语法错误:意外的文件结尾

我做错了什么?不能使用这个内部函数或错误的重点...我不确定是什么错误试图说。谢谢。

1 个答案:

答案 0 :(得分:0)

here-document 的结束分隔符需要向左冲洗,没有任何缩进,无论它是出现在函数中还是其他地方。

允许缩进,但只允许使用制表符,如果here-document以<<-word而不是<<word开头(那么任何初始制表符都将从此处每行的开头删除-document)。

另请注意,如果使用bash脚本输出的脚本包含here- documents,那么这些文档的分隔符必须与用于结束脚本内容的分隔符不同。 / p>

由于分隔符可能是任意单词,因此最好使用描述性分隔符,例如END_SCRIPT或类似名称。