繁体   English   中英

Bash 后增量中止脚本执行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM