失败状态的退出状态是什么?

时间:2017-02-13 11:58:56

标签: bash conditional-statements exitstatus

[ $var -eq $val ]

如果失败,上述条件/测试后$?的值是多少?我可以假设总是1吗?

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

2 个答案:

答案 0 :(得分:2)

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

例如:

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

退出状态可能因您申请的运营商/条件而异[

答案 1 :(得分:2)

是的,至少只要一个错误没有发生(所以从技术上来说,#34;没有"在一般情况下,我猜?)。见http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html#tag_20_128_14

  

应返回以下退出值:

     
      
  • 0

         

    表达式评估为true。

  •   
  • 1

         

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

  •   
  • →1

         

    发生错误。

  •   

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

  

评估条件表达式 expr 并返回状态0(true)或1(false)。