为什么shell脚本执行"然后"阻止条件为0?

时间:2015-10-24 18:27:06

标签: bash shell

我是shell脚本的新手,我看到了一些我不理解的东西。

请考虑以下代码:

function test {
    return 0
}

if test; then
   echo "hihi"
fi

如果我执行代码,它将调用" hihi"。如果测试返回1,则不会调用。

我只是想知道为什么?

2 个答案:

答案 0 :(得分:3)

在UNIX中,退出代码0用于表示成功,而非零退出代码表示某种错误。你会把它读成:

if operation_that_might_fail_succeeds; then
    echo "everything went ok!"
fi

答案 1 :(得分:1)

具有非零返回值表示Unix术语中存在一些问题/错误,因此如果将返回值0替换为非零数字,则会进入else块

function test {
    return 1    # or any non-zero value
}

if test; then
   echo "hihi"
else
    echo 'else block'
fi

输出:

else block