运行bash -e
:
round=0
((round++))
echo "Done"
不会显示Done
。为什么?设置后递增-e
如何使用后递增?
请看一些例子:
round=0
((round++))
echo $?
round=1
((round-1))
echo $?
((0))
echo $?
在所有情况下,$?
返回 1。
Bash
手册页指出:
(表达式((表达式
根据下面描述的规则进行计算 算术评估。如果表达式的值不为零,则 返回状态为 0;否则返回状态为 1。 这正是 相当于让"表达"。
如果设置了-e
选项,则脚本将退出,因为:
-e
如果管道立即退出(这可能 由单个简单命令组成(,一个 列表或复合命令(请参阅 SHELL 上面的语法(,以非零状态退出。...
您可以通过为算术计算结果分配变量来避免终止:
set -e
round=0
dummy=$((round++))
echo "Done"
希望这有帮助。