我在csh中这样做
set it = `expr 1 - 1`
echo $?
它将it
设置为0,但返回的错误代码为1.如果表达式评估正确并且答案设置正确,为什么错误代码不为0?
另一方面,如果我有
set it = `expr 2 - 1`
echo $?
然后错误代码为0.评估1-1有什么问题?
答案 0 :(得分:1)
因为expr
很奇怪。任何计算结果为零的表达式都会发生同样的情况。
引用man page:
如果EXPRESSION既不是空也不是0,则退出状态为0,如果是EXPRESSION,则退出状态为1 如果EXPRESSION在语法上无效,则为null或0,2,如果为,则为3 发生错误。
最好使用Shell算法。
@ it = 1 - 1
echo $? : $it
0 : 0