이 종료 코드 기반 조건문이 예상한 것과 반대되는 이유는 무엇입니까? [복사]

이 종료 코드 기반 조건문이 예상한 것과 반대되는 이유는 무엇입니까? [복사]

스크립트는 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. 아니면 전혀 종료 코드가 아닐 수도 있습니다.

관련 정보