Bash脚本功能验证

时间:2010-07-10 22:51:01

标签: validation bash scripting

我正在尝试对脚本中调用的每个函数进行验证,如果一个函数失败,则会错误地输出整个脚本。

寻找最佳方法。我觉得我知道一次这样做的好方法,但不能再弄清楚了。

我可以蛮力,但它很讨厌。这就是我如何让它正常工作

    copy_files $1
    if [ "$?" -ne "0" ]; then
            error "Copying files"
            return -1
    fi

因为我有一个脚本,所以非常难看:

命令1 命令2 指令代码

必须用返回包装所有这些命令并不是很理想。 :(请帮忙!

3 个答案:

答案 0 :(得分:3)

command1 || (error "Cmd1 fail"; return -1); command2 || (error "Cmd2 fail"; return -1);

等。等||运算符表示只有上一个命令失败才会执行下一个命令。 &&正好相反。括号将要运行的命令分组。

答案 1 :(得分:1)

由于您说要为脚本中的每个命令执行此操作,因此可以插入

set -e

一开始。如果任何命令返回0以外的状态代码,那么该调用会立即退出shell。(例外:条件语句中作为测试一部分的命令,以及&&||后面的命令和进一步的命令)

答案 2 :(得分:0)

你可以这样做:

good() { 
    return 0;
}

bad() {
    return 5;
}

wrapper() { 
    $1  

    rc=$?

    if [ "$rc" -ne "0" ]; then
            echo "error: $1 returned $rc"
            exit -1
    fi  
}


wrapper bad 
wrapper good

或者,如果你可以传递一个功能列表,如下:

wrapper() {
    for f in $*; do

        $f 
        rc=$?

        if [ "$rc" -ne "0" ]; then
                echo "error: $f returned ${rc}"
                return -1
        fi
    done
    return 0;
}


wrapper good bad

if [ "$?" -ne "0" ]; then
    #error handling here
    exit -1;
fi