在我的壳里:

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

为什么MyRead返回1,但是回音“MyRead有0个退出代码”?
我更改了代码如下:
mycommand
ret=$?
if [ $ret -eq 0 ]; then
  echo "mycommand has 0 exit code"
else
  echo "mycommand has non-zero exit code"
fi

当返回1时,“i”具有非零退出代码。

最佳答案

只有当测试条件返回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

关于linux - 如果条件测试的行为不符合预期,为什么 shell 程序逻辑不存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40650457/

10-10 00:30