0
[ $var -eq $val ]

$?如果失败,上述条件/测试后的价值是多少?我可以假设它会一直如此1吗?

编辑:阅读答案后,我意识到我的问题并不准确。我的意思是“如果没有发生错误,它会一直1如此吗?”。

4

2 回答 2

2

不,如果条件失败,它不会总是 1。

例如:

[root@localhost ~]# [ xxxxxx15 -gt "$10" ]
bash: [: xxxxxx15: integer expression expected
[root@localhost ~]# echo $?
2

退出状态可能因您应用的操作员/条件而异

于 2017-02-13T12:12:09.230 回答
2

是的,至少只要不发生错误(我猜在一般情况下从技术上讲是“不”吗?)。见http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html#tag_20_128_14

应返回以下退出值:

  • 0

    表达式评估为真。

  • 1

    表达式评估为假或表达式丢失。

  • >1

    发生错误。

https://www.gnu.org/software/bash/manual/bashref.html#Bourne-Shell-Builtins

计算条件表达式expr并返回状态 0(真)或 1(假)。

于 2017-02-13T12:12:38.967 回答