[英]Bash post increment aborts script execution
使用bash -e
运行:
round=0
((round++))
echo "Done"
不会显示Done
。 为什么? 设置-e
时如何使用后增量?
请看一些例子:
round=0
((round++))
echo $?
round=1
((round-1))
echo $?
((0))
echo $?
在所有情况下$?
返回 1。
Bash
联机帮助页指出:
((表达))
表达式根据以下算术求值中描述的规则进行求值。 如果表达式的值非零,则返回状态为 0; 否则返回状态为 1。这完全等同于 let "expression"。
如果设置了-e
选项,则脚本将退出,因为:
-e
如果管道(可能由单个简单命令组成)、列表或复合命令(参见上面的 SHELL GRAMMAR)以非零状态退出,则立即退出。 ...
您可以通过为算术计算结果分配一个变量来避免终止:
set -e
round=0
dummy=$((round++))
echo "Done"
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.