이 문의 의미 - test -x /usr/bin/find ||

이 문의 의미 - test -x /usr/bin/find ||

나는 단지 다음 진술이 무엇을 의미하는지 그리고 그것이 올바른지 이해하고 싶습니다.

test -x /usr/bin/find || exit 0 
Command 1
Command 2
Command 3

의 출력은 test -x /usr/bin/find항상 0입니다. 이는 종료 0 명령이 실행된다는 의미이며, 이는 명령 1, 2, 3이 절대 실행되지 않음을 의미합니다. 내가 여기 있나요?

답변1

test -x /usr/bin/find(또는 [ -x /usr/bin/find ]) 아무것도 출력하지 않습니다. 테스트는 다음과 같습니다.진짜/usr/bin/find기존 실행 파일인 경우잘못된경로 이름이 존재하지 않거나 실행 가능하지 않은 경우.

성공적으로 종료 되면 test(종료 상태가 0, 즉 "오류 없음"을 의미함) 쉘은 나머지 명령을 실행합니다. 종료에 실패하면(0이 아닌 종료 상태, "일부 오류"를 나타냄) exit 0현재 셸이 종료되어 나머지 명령이 실행되지 않습니다.

틀림없이 찾을 수 없을 때 사용 exit 1하거나 교체하는 exit것이 좋습니다 . 종료 상태(0이 아님)에 마스크를 사용하고 이 스크립트의 호출자가 지정된 위치에서 실패한 조회에 대한 알림을 받지 않도록 합니다.exit 0find/usr/binexit 0testfind

셸에서 부울로 테스트할 때 종료 상태 0이 "true"로 평가된다는 사실과 관련됩니다.

사용과 관련이 ||있으며 &&일반적으로 말하면:

답변2

아니요, 그들은 항상 처형당했습니다. (모든 POSIX 셸에서 유사 하게 man bash작동합니다):

   An OR list has the form

          command1 || command2

   command2  is executed if, and only if, command1 returns a non-zero exit
   status.

test -x /usr/bin/find0이 반환 되므로 command2( exit 0이 경우)는 실행되지 않고 스크립트는 계속 실행됩니다.

관련 정보