Bash에서 언제 "|| true"를 사용합니까?

Bash에서 언제 "|| true"를 사용합니까?

나는 " "에 대해 매우 궁금해서 || true다음과 같은 두 가지 예를 작성했습니다.

예시 #1

    #!/usr/bin/env bash
    
    rm some_random_file_that_does_not_exist
    
    echo "End of program"

실행되면 다음 결과가 생성됩니다.

$ ./remove.sh
rm: cannot remove 'some_random_file_that_does_not_exist': No such file or directory
End of program

예시 #2

#!/usr/bin/env bash

rm some_random_file_that_does_not_exist || true

echo "End of program"

실행하면 다음과 같은 결과가 생성됩니다.

$ ./remove.sh
rm: cannot remove 'some_random_file_that_does_not_exist': No such file or directory
End of program

내가 볼 수 있는 유일한 차이점은 예제#1에서는 존재하지 않는 파일에 대한 줄을 삭제하려고 시도한 결과 코드가 1인 반면, 예제#2에서는 결과 코드가 0(영)이라는 것입니다.

내가 이 ""를 이해하는 방법은 || true"" 연산자 왼쪽에 있는 명령의 실행이 ||결과 코드 0으로 끝나는 것을 확인하는 것입니다.

|| true그래서 내 질문은... 이 이유 외에도 Bash의 명령 끝에 ""를 사용하는 것을 정당화하는 다른 이유가 있습니까?

답변1

|| trueerrexit쉘 옵션이 설정된 경우 오류 시 즉시 종료를 억제하는 데 사용할 수 있습니다. 이 옵션은 스크립트에서 명시적으로 set -e활성화 하거나 명시적 인터프리터 및 옵션을 사용하여 스크립트를 호출하여 활성화할 수 있습니다 . 유사한 셸 에서는 , 예를 들어 (아무 작업도 성공적으로 수행하지 않는 유틸리티) 를 대신 사용할 수도 있습니다 .set -ebash -e scriptnameshbash:true|| :

동일한 목적으로 Makefile 레시피에도 사용할 수 있습니다.

관련 정보