나는 " "에 대해 매우 궁금해서 || 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
|| true
errexit
쉘 옵션이 설정된 경우 오류 시 즉시 종료를 억제하는 데 사용할 수 있습니다. 이 옵션은 스크립트에서 명시적으로 set -e
활성화 하거나 명시적 인터프리터 및 옵션을 사용하여 스크립트를 호출하여 활성화할 수 있습니다 . 유사한 셸 에서는 , 예를 들어 (아무 작업도 성공적으로 수행하지 않는 유틸리티) 를 대신 사용할 수도 있습니다 .set -e
bash -e scriptname
sh
bash
:
true
|| :
동일한 목적으로 Makefile 레시피에도 사용할 수 있습니다.