我有一个在 gitlab CI 上使用的 shell 脚本,它运行提供的命令。问题是如果命令失败它不会显示错误,它只是显示ERROR: Job failed: exit code 1
。我在本地尝试了该脚本,它能够输出失败的命令,有没有办法可以强制它在退出作业之前通过我的脚本显示错误?
我的脚本的特定部分
output="$( (cd "$FOLDER"; eval "$@") 2>&1 )"
if [ "$output" ]; then
echo -e "$output\n"
fi
最佳答案
捕获适用于每个 shell 的错误的一种方法是将两个命令与逻辑 OR ||
结合起来。
从子 shell 捕获错误:
output="$( (cd "$FOLDER"; eval "$@") 2>&1 )" || errorcode="$?"
如果失败,将保存上一个命令的错误代码。
如果重要命令失败,则退出并显示自己的错误代码
output="$( (cd "$FOLDER"; eval "$@") 2>&1 )" || exit 12
对于更复杂的事情,我们可以定义一个将在 OR 之后调用的函数。
handle_error() {
# do stuff
}
output="$( (cd "$FOLDER"; eval "$@") 2>&1 )" || handle_error
关于shell - gitlab-ci中的脚本不输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48419152/