Aqu*_*wer 17 bash error-handling
n=0;
((n++));echo "ret=$?;n=$n;"
((n++));echo "ret=$?;n=$n;"
((n++));echo "ret=$?;n=$n;"
Run Code Online (Sandbox Code Playgroud)
从那时n=1
起,((n++))
工作正常,
只有当n=0
,((n++))
返回错误,
而我正在使用trap '' ERR
导致问题的一个
这是一些错误吗?
smh*_*ich 16
这是因为 的返回值(( expression ))
不用于错误指示。从bash
联机帮助页:
((表达式))
该表达式是根据下面在ARITHMETIC EVALUATION 中描述的规则进行计算的。如果表达式的值非零,则返回状态为 0;否则返回状态为 1。这完全等同于let " expression "。
所以,你的情况,因为表达式的值是零,返回状态(( ... ))
是1。
Bru*_*ger 13
原因正如上面的 pmos 所写。
一种解决方案是使用((++n))
做增量。您的表达式永远不会计算为零,因此看起来永远不会导致错误。