スクリプトは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
。あるいは、まったく終了コードではないかもしれません。