Bash 스크립트의 다음 줄은 다음과 같습니다.
$GEN_SDK $GEN_SDK_FLAGS $OUT_DIR/toolchain || panic "Cannot generate SDK toolchain!"
실행되면 충돌이 발생합니다. 이 줄의 논리는 첫 번째 명령이 제대로 실행되면 두 번째 명령이 평가되지 않는다는 것입니다. 하지만 첫 번째 명령이 제대로 작동한다는 것은 무엇을 의미합니까? return true
배쉬에는 그런 것이 없습니다. 그렇다면 제대로 작동하지 않는다는 것을 어떻게 알 수 있을까요?
답변1
셸에서 모든 프로세스에는 종료 코드(또는 반환 코드)가 있습니다. 종료 코드는 0
오류가 발생하지 않았음을 의미한다는 점에서 "실제"입니다(프로그래밍 언어에서 일반적으로 기대하는 것과는 반대로 0
"거짓"임). 종료 코드가 가 아니면 bash 구조가 command || othercommand
실행됩니다. 이는 종료 코드가 다음과 같은 경우에만 동일합니다.othercommand
command
0
command && othercommand
othercommand
command
예 0
.
시험해보고 싶다면 셸 확장이 $?
이전 명령의 종료 코드로 평가됩니다.
$ true; echo $?
0
$ false; echo $?
1
$ true || echo "Darned true."
$ false || echo "Lies."
Lies.