我注意到bash符号的返回状态明显不一致。
考虑以下(( ))
$> A=0
$> ((A=A+1))
$> echo $? $A
0 1
然而,使用其他众所周知的速记增量符号会产生:
$> A=0
$> ((A++))
$> echo $? $A
1 1
如果set -e
脚本中有内置函数,则第二种表示法将导致脚本退出,因为((A++))
返回的退出状态非零。这个问题或多或少在这个相关问题中得到了解决。但这似乎并不能解释这两种符号的退出状态的差异,((A=A+1))
并且((A++))
((A++))
1
当且仅当A
equals似乎返回0
。(免责声明:我没有做过详尽的测试。在 bash 4.1.2 和 4.2.25 中测试过)。所以最后一个问题归结为:
为什么A=0; ((A++))
返回1
?