![이 종료 코드 기반 조건문이 예상한 것과 반대되는 이유는 무엇입니까? [복사]](https://linux55.com/image/200733/%EC%9D%B4%20%EC%A2%85%EB%A3%8C%20%EC%BD%94%EB%93%9C%20%EA%B8%B0%EB%B0%98%20%EC%A1%B0%EA%B1%B4%EB%AC%B8%EC%9D%B4%20%EC%98%88%EC%83%81%ED%95%9C%20%EA%B2%83%EA%B3%BC%20%EB%B0%98%EB%8C%80%EB%90%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.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
. 아니면 전혀 종료 코드가 아닐 수도 있습니다.