为什么shell逻辑不在于条件测试表现不如预期

时间:2016-11-17 08:58:04

标签: linux shell

在我的shell中:

       <TextBlock>
      <Run Text="Hello World"></Run>
      <Underline>
          <Run Text="Hello World"></Run>
      </Underline>
        <Bold>
             <Run Text="Hello World"></Run>
        </Bold>
       </TextBlock>

为什么 mycommand 返回1但是echo&#34; mycommand有0退出代码&#34;?

我将代码更改为:

if ! mycommand;then
  echo "mycommand has 0 exit code"
else
  echo "mycommand has non-zero exit code"
fi

mycommand 返回1时,echo&#34; mycommand具有非零退出代码&#34;正如我所料

3 个答案:

答案 0 :(得分:0)

仅当测试条件返回0时才会执行if - 块,这意味着成功。非零值将被视为错误,else - 块将被执行。

if something; then
    echo "Command succeeded (exit code 0)"
else
    echo "Command failed (exit code $?)"
fi

因此,请删除第一个代码块中的!,然后您将获得所需的行为。

进一步阅读:Bash Guide for Beginners: Conditional statements

答案 1 :(得分:0)

在bash中0表示true,任何更高表示false。因此,当! mycommand为假时,否定mycommand变为真。

答案 2 :(得分:0)

在shell中如果执行的命令是正确的,则返回0存储在$?中。如果我们执行错误的命令,它将返回非零(1-255)值,该值也存储在$?中。

 Exit Value     Exit Status
 0 (Zero)   Success
 Non-zero   Failure
 1          False
 2          Incorrect usage
 127        Command Not found
 126        Not an executable