![为什么这个基于退出代码的条件语句的作用与预期相反?](https://linux22.com/image/200733/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%E4%B8%AA%E5%9F%BA%E4%BA%8E%E9%80%80%E5%87%BA%E4%BB%A3%E7%A0%81%E7%9A%84%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5%E7%9A%84%E4%BD%9C%E7%94%A8%E4%B8%8E%E9%A2%84%E6%9C%9F%E7%9B%B8%E5%8F%8D%EF%BC%9F%20.png)
脚本是test.sh
.
#!/bin/sh
if cmp -s file.a file.b; then
echo diff
else
echo same
fi
当检查退出代码时,cmp -s
我看到:
何时file.a
和file.b
不同。
cmp -s file.a file.b
echo $?
1
当file.a
和file.b
相同时。
cmp -s file.a file.b
echo $?
0
那么为什么条件语句似乎相反呢?
何时file.a
和file.b
不同。
./test.sh
same
当file.a
和file.b
相同时。
./test.sh
diff
这不是我第一次看到这种情况。我一定是误解了该if
语句如何解释退出代码,或者也许它根本不是退出代码?