【发布时间】:2017-04-05 15:39:27
【问题描述】:
我有包含多行代码的 bash 脚本,我需要在它返回 $ 时运行它? == 0,但如果它有错误,我需要停止它并使用代码 1 退出?
问题是怎么做?
我尝试使用set -e 命令,但 Jenkins 没有将构建标记为失败,对他来说它看起来像成功
我还需要获取错误消息以在我的 Jenkins 日志中显示它
我设法获得了错误代码(在我的情况下它将是 126),但是如何获得错误消息?
main file
fileWithError.sh
rc=$?; if [[ $rc != 0 ]]; then
echo "exit {$rc} ";
fi
fileWithError.sh
#!/bin/sh
set -e
echo "Test"
agjfsjgfshgd
echo "Test2"
echo "Test3"
【问题讨论】:
-
您的问题不清楚。它是“长”的,因为脚本本身是很多行代码,还是运行了“长”的时间?如果任何命令失败,您是否希望它以非零状态终止,或者您是否希望在连续循环中运行它,仅在脚本调用失败时中止? “它有错误”是什么意思?你的意思是它遇到了意外的输入吗?或者它调用的命令之一以非零状态退出?或者它产生超出预期范围的输出?澄清问题。
-
我更新了问题
-
你还没有回答许多澄清问题。
set -e确实应该因错误而失败,所以听起来调用你的脚本的代码是错误的。 -
我可能是错的,但看起来你是从另一个脚本调用一个脚本。 Jenkins 只看到您成功调用了辅助脚本,从技术上讲,它的退出代码为零。