检查bash脚本中的所有命令退出代码

时间:2015-10-07 11:02:54

标签: linux bash error-handling

考虑我有一个很长的bash脚本和几个命令的情况。是否有一种简单的方法可以轻松检查所有的退出状态。因此,如果出现故障,我可以显示哪个命令失败及其返回码。

我的意思是,我不想对每个其中一个检查使用测试,如下所示:

my_command
if [ $status -ne 0 ]; then
    #error case
    echo "error while executing " my_command " ret code:" $?
    exit 1
fi

3 个答案:

答案 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