这让我很惊讶:将后增运算符(++)应用于零值变量会产生非零结果代码。也就是说,给定:#!/bin/bashmyvar=0let myvar++echo \'result: $?&
这让我很惊讶:将后增运算符( ++
)应用于零值变量会产生非零结果代码。也就是说:
#!/bin/bash
myvar=0
let myvar++
echo "result: $?"
运行该命令(使用 bash 5.1.0)结果为:
result: 1
为什么会产生非零结果代码?我们使用数字表达式看到相同的行为:
#!/bin/bash
myvar=0
(( myvar++ ))
echo "result: $?"
另一方面,如果我们使用 +=
而不是 ++
,或者如果我们以 非零值 开始 myvar
,我们将按预期收到 0 结果代码。以下...
myvar=1
let myvar+=1
echo "result: $?"
myvar=1
let myvar++
echo "result: $?"
myvar=1
(( myvar++ ))
echo "result: $?"
...全部生产:
result: 0
这里发生了什么事?
为什么 bash 后增运算符设置非零结果代码?
下载声明:
本站所有软件和资料均为软件作者提供或网友推荐发布而来,仅供学习和研究使用,不得用于任何商业用途。如本站不慎侵犯你的版权请联系我,我将及时处理,并撤下相关内容!