为什么这个基于退出代码的条件语句的作用与预期相反?

为什么这个基于退出代码的条件语句的作用与预期相反?

脚本是test.sh.

#!/bin/sh

if cmp -s file.a file.b; then
  echo diff
else
  echo same
fi

当检查退出代码时,cmp -s我看到:

何时file.afile.b不同。

cmp -s file.a file.b
echo $?
1

file.afile.b相同时。

cmp -s file.a file.b
echo $?
0

那么为什么条件语句似乎相反呢?

何时file.afile.b不同。

./test.sh
same

file.afile.b相同时。

./test.sh
diff

这不是我第一次看到这种情况。我一定是误解了该if语句如何解释退出代码,或者也许它根本不是退出代码?

相关内容