每一条 Shell 命令,不管是 Bash 内置命令,还是外部的 Linux 命令,还是自定义的 Shell 函数,当它退出时,都会返回一个比较小的整数值给调用(使用)它的程序,这就是命令的退出状态。if 语句的判断条件,从本质上讲,判断的就是命令的退出状态。按照惯例来说,退出状态为 0 表示“成功”;也就是说,程序执行完成并且没有遇到任何问题。有编程经验的读者请注意,Shell 的这个部分与你所熟悉的其它编程语言正好相反:在C语言、C++、Java、Python 中,0 表示“假”,其它值表示“真”。在 Shell 中,有多种方式取得命令的退出状态,其中 $?是最常见的一种。上节《Shell if else》中使用了 (()) 进行数学计算,我们不妨来看一下它的退出状态。

Shell退出状态的使用

Shell退出状态的使用