退出1是必要的附加到'否则'

时间:2018-04-04 09:17:33

标签: bash

我正在遵循控制流程命令的说明,
其中exit 1附加到每个else,例如

    #! ~/bin/bash
    min_val=1
    max_val=100
    int=50
    if [[ "$int" =~ ^-?[0-9]+$ ]]; then
        if [[ "$int" -ge "$min_val" &&  "$int" -le "$max_val" ]]; then
            echo "$int is within $min_val to $max_val."
        else
            echo "$int is out of range."
        fi
    else
        echo "int is not an integer." >&2
        exit 1 # here,
    fi

我跑步并获得退出状态

    $ bash test_integer2.sh
    int is not an integer.
    $ echo $?
    1

但是,当我注释掉exit 1时,退出状态仍为1。

  ...
    else
        echo "int is not an integer." >&2
        #exit 1
    fi

是否建议保留exit 1

1 个答案:

答案 0 :(得分:0)

如果shell命令失败,则始终将退出状态返回为1。在您的情况下,它失败了if条件,这也被视为成功与否。由于失败,因此退出状态为1

现在回答你的问题

  

保留退出1是否是建议的做法?

答案是,它取决于最终执行是否成功且结果如预期那样exit 0否则它应该是1或者从命令返回的数字大于0 。假设在其他部分您再次执行其他命令,您将会做什么,您将根据脚本的最终结果返回退出状态。因此,管理exit status始终是一种很好的做法。