从 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
或类似的分隔符。
我想从 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
或类似的分隔符。