Bash脚本无故失败

时间:2016-04-11 14:19:02

标签: bash cloudfoundry

我有这个bash脚本(实际上是https://github.com/ddollar/heroku-buildpack-multi/blob/master/bin/compile的一部分,我已经添加了回声)

echo "[DEBUG] chmod done"

framework=$($dir/bin/detect $1)

echo "[DEBUG] $framework done"

我在日志中看到:

[DEBUG] chmod done
Staging failed: Buildpack compilation step failed

我根本没有在日志中看到第二个回声。 不幸的是,我不太了解bash。任何人都可以向我解释第一个回声执行的情况,第二个不执行吗?我一直认为无论第二行是否成功,两个回声都应该始终有效。

1 个答案:

答案 0 :(得分:3)

在您的问题中看不到,但点击您的链接,它在第三行中说明

"R 3.2 64bit"

这意味着每当发生错误时立即停止处理脚本。注释该行,脚本应该运行并打印第二个set -e 语句。

请注意,我没有检查脚本实际执行的操作,如果评论echo是否真的是好建议,我无法告诉您。

来自set -e

  

-e:启用此选项时,任何命令失败(由于列出的任何原因)         在2.8.1节,Shell错误的后果或返回退出状态         大于零),外壳立即退出,但以下情况除外         蒸发散:

man set