我遇到了shell脚本的意外行为。最后,我发现错误是由((a++))
的返回码引起的。但我不知道为什么。简化的脚本如下:
set -e
a=0
((a++))
echo "here"
上面的脚本的输出为空。
然后我删除set -e
并打印((a++))
的返回码,然后脚本变为
a=0
((a++))
echo $?
echo $a
echo "here"
则输出为
1
1
here
然后我再打一次((a++))
:
a=0
((a++))
echo $?
echo $a
((a++))
echo $?
echo $a
echo "here"
输出为:
1
1
0
2
here
为什么两次调用((a++))
的返回码不同?
非常感谢!