我想从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:语法错误:意外的文件结尾
我做错了什么?不能使用这个内部函数或错误的重点...我不确定是什么错误试图说。谢谢。
答案 0 :(得分:0)
here-document 的结束分隔符需要向左冲洗,没有任何缩进,无论它是出现在函数中还是其他地方。
允许缩进,但只允许使用制表符,如果here-document以<<-word
而不是<<word
开头(那么任何初始制表符都将从此处每行的开头删除-document)。
另请注意,如果使用bash
脚本输出的脚本包含here- documents,那么这些文档的分隔符必须与用于结束脚本内容的分隔符不同。 / p>
由于分隔符可能是任意单词,因此最好使用描述性分隔符,例如END_SCRIPT
或类似名称。