用于评估1-1的奇怪的C-shell返回码

时间:2014-10-19 14:25:24

标签: shell csh

我在csh中这样做

set it = `expr 1 - 1`
echo $?

它将it设置为0,但返回的错误代码为1.如果表达式评估正确并且答案设置正确,为什么错误代码不为0?

另一方面,如果我有

set it = `expr 2 - 1`
echo $?

然后错误代码为0.评估1-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