从 bash 脚本编写 bash 脚本。没有解释的台词

Writing a bash script from bash script. Lines without interpretation

我想从 bash 脚本创建一个 bash 脚本。使用旧的 echo 样式(例如 echo -e "some commands" > /path/to/file.sh)的问题是命令被解释并替换为它的值。

谷歌搜索我在这个论坛上找到了这个解决方案:

在那里,他们使用:

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

如果我只用这个做一个迷你脚本,它就可以工作...问题是在尝试集成到我的大脚本时...使用非常基本的 "some commands"...它会生成一个错误:

警告:此处文档位于第 xxxx 行,由文件结尾分隔(需要“EOF”)./myscript.sh:第 xxxx 行:语法错误:意外的文件结尾

我做错了什么?不能在函数内部使用这个或者错误的意义是什么......我不确定是否理解错误试图说的是什么。谢谢。

此处文档的结束分隔符需要向左对齐,没有任何缩进,无论它出现在函数中还是其他地方。

允许缩进,但只能使用制表符,如果此处文档以 <<-word 而不是 <<word 开头(任何初始制表符将从每一行的开头删除)这里的文档)。

另请注意,如果您使用 bash 脚本输出的脚本包含 here-documents,则这些 here-documents 的分隔符必须与用于结束脚本内容的分隔符不同.

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