用于计算1-1的奇怪C-shell返回代码

用于计算1-1的奇怪C-shell返回代码,shell,csh,Shell,Csh,我在csh做这件事 set it = `expr 1 - 1` echo $? 它将It设置为0,但返回的错误代码为1。如果表达式计算正确且答案设置正确,为什么错误代码不是0 另一方面,如果我有 set it = `expr 2 - 1` echo $? 那么错误代码是0。评估1-1有什么问题 因为expr很奇怪。计算结果为零的任何表达式也会发生同样的情况 引述: 如果表达式既不是null也不是0,则退出状态为0;如果表达式不是null,则退出状态为1 为null或0,如果表达式语法无效,则

我在csh做这件事

set it = `expr 1 - 1`
echo $?
它将
It
设置为0,但返回的错误代码为1。如果表达式计算正确且答案设置正确,为什么错误代码不是0

另一方面,如果我有

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

那么错误代码是0。评估1-1有什么问题

因为
expr
很奇怪。计算结果为零的任何表达式也会发生同样的情况

引述:

如果表达式既不是null也不是0,则退出状态为0;如果表达式不是null,则退出状态为1 为null或0,如果表达式语法无效,则为2,如果表达式语法无效,则为3 发生了一个错误

Shell算法更好

@ it = 1 - 1
echo $? : $it
0 : 0