扫描整个代码,如果$? = 0或1

时间:2016-04-05 02:58:54

标签: linux shell

我知道在Linux中检查错误级别可以使用$?来完成。问题是,如果其中一个命令成功执行,$?值将被重置,即使上一个命令失败也是如此。我用于测试的代码如下:

cd /vobs/test2/test3 
if [ $2 = "R" ]; then 
     mv missing ~/missing2
 echo "Created"

假设mv missing ~/missing2失败,$?应该等于1,但由于执行了最后一个命令echo "Created"$?将等于0 {1}}。如何对上面的代码执行扫描,以便$?=1执行exit 1命令的时刻。我可以执行if else for each command execute但它不是最好的执行方式,是吗?我需要一些建议。

1 个答案:

答案 0 :(得分:2)

您可以使用set -e退出第一个失败命令。这是非官方的strict bash mode":

的一部分
  • set -e

    退出所有错误。

  • set -o pipefail

    在管道中的第一个问题上失败而不是仅在最后一个问题上失败。

  • set -u

    无法访问未定义的变量。