some_script.sh는 무엇을 의미하나요? || Bash 스크립트에서 "메시지"는 무엇을 의미합니까?

some_script.sh는 무엇을 의미하나요? || Bash 스크립트에서 "메시지"는 무엇을 의미합니까?

Bash 스크립트의 다음 줄은 다음과 같습니다.

$GEN_SDK $GEN_SDK_FLAGS $OUT_DIR/toolchain || panic "Cannot generate SDK toolchain!"

실행되면 충돌이 발생합니다. 이 줄의 논리는 첫 번째 명령이 제대로 실행되면 두 번째 명령이 평가되지 않는다는 것입니다. 하지만 첫 번째 명령이 제대로 작동한다는 것은 무엇을 의미합니까? return true배쉬에는 그런 것이 없습니다. 그렇다면 제대로 작동하지 않는다는 것을 어떻게 알 수 있을까요?

답변1

셸에서 모든 프로세스에는 종료 코드(또는 반환 코드)가 있습니다. 종료 코드는 0오류가 발생하지 않았음을 의미한다는 점에서 "실제"입니다(프로그래밍 언어에서 일반적으로 기대하는 것과는 반대로 0"거짓"임). 종료 코드가 가 아니면 bash 구조가 command || othercommand실행됩니다. 이는 종료 코드가 다음과 같은 경우에만 동일합니다.othercommandcommand0command && othercommandothercommandcommand 0.

시험해보고 싶다면 셸 확장이 $?이전 명령의 종료 코드로 평가됩니다.

$ true; echo $?
0
$ false; echo $?
1
$ true || echo "Darned true."
$ false || echo "Lies."
Lies.

관련 정보