我正在遵循控制流程命令的说明,
其中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
?
答案 0 :(得分:0)
如果shell命令失败,则始终将退出状态返回为1
。在您的情况下,它失败了if
条件,这也被视为成功与否。由于失败,因此退出状态为1
。
现在回答你的问题
保留退出1是否是建议的做法?
答案是,它取决于最终执行是否成功且结果如预期那样exit 0
否则它应该是1
或者从命令返回的数字大于0
。假设在其他部分您再次执行其他命令,您将会做什么,您将根据脚本的最终结果返回退出状态。因此,管理exit status
始终是一种很好的做法。