Nei*_*ill 6 shell bash upstart
我继承了一些 bash 脚本,其中作者在函数名称中使用了“-”而不是更普通的“_”,例如:
function a-b {
...
}
Run Code Online (Sandbox Code Playgroud)
在 bash 中丑陋但合法。问题是我在一个暴发户脚本中找到了这个并得到了
x.sh:第 5 行:`a-b':不是有效标识符
花了一段时间才意识到这是名称而不是函数内容。无论如何,在这种情况下重命名不是一个简单的选择,据我所知,暴发户使用/bin/shnot/bin/bash解析?运行它的脚本。因此我猜这个问题。
除了重命名之外,还有其他解决方法的想法吗?
如果不出意外,至少我希望这个问题能警告其他人奇怪的 bash 编码风格的危险,以及它们有时如何反咬你。
来自 Upstart 手册,更改默认外壳。有 3 个选项,前 2 个涉及将默认 shell 更改/bin/sh为其他选项。但是第三个选项看起来可以解决您的特定问题。
摘抄
在您希望使用不同 shell 运行的作业配置文件中使用“此处文档”(假设您选择的 shell 支持它们):
Run Code Online (Sandbox Code Playgroud)script /bin/bash <<EOT echo "Hi - I am running under the bash shell" date echo "and so am I :)" EOT end script
| 归档时间: |
|
| 查看次数: |
983 次 |
| 最近记录: |