考虑我有一个很长的bash脚本和几个命令的情况。是否有一种简单的方法可以轻松检查所有的退出状态。因此,如果出现故障,我可以显示哪个命令失败及其返回码。
我的意思是,我不想对每个其中一个检查使用测试,如下所示:
my_command
if [ $status -ne 0 ]; then
#error case
echo "error while executing " my_command " ret code:" $?
exit 1
fi
答案 0 :(得分:4)
您可以执行trap "cmd" ERR
,在命令失败时调用cmd
。然而,该解决方案具有一些缺点。例如,它不会在管道内发现故障。
简而言之,您最好根据具体情况正确地进行错误管理。
答案 1 :(得分:3)
您可以编写一个启动的功能:
function test {
"$@"
local status=$?
if [ $status -ne 0 ]; then
echo "error with $1" >&2
fi
return $status
}
test command1
test command2
答案 2 :(得分:2)
可以测试$?
的值,或者只是将set -e
放在脚本的顶部,这将导致它在任何错误的命令时退出。
#!/bin/sh
set -xe
my_command1
# never makes it here if my_command1 fails
my_command2