명령이 실패하면 bash가 즉시 종료되도록하는 "set -e"의 효과를 취소하는 방법은 무엇입니까?


205

입력 후 set -e대화식 bash 쉘에 bash는 명령이 0이 아닌 것으로 종료되면 즉시 종료됩니다. 이 효과를 어떻게 취소 할 수 있습니까?

답변:


309

set +e. 예, 쉘 옵션 을 활성화set - 하고로 비활성화 합니다 set +. 건포도


대단히 감사합니다. 마지막으로 읽지 않은 해당 매뉴얼 페이지 ( faqs.org/docs/bashman/bashref_56.html ) 의 마지막 줄 중 하나 입니다.
Tianyi Cui

bash 매뉴얼은 엄청나게 거대합니다. (참고로, 당신은 새로운 것처럼 보이므로 : 귀하의 질문에 가장 적합한 답변 아래에있는 확인 표시를 클릭하면 완료된 것입니다. 이것을 "수락"이라고합니다.)
zwol

12
안타깝게도, 유닉스 쉘 언어 (대부분 'bash'에 국한되지 않음)는 오늘날까지 가장 널리 사용되는 프로그래밍 언어 중 하나입니다. 이 작은 사마귀에 대해 더 많이 배워야 할 것입니다. 그리고 나는 그것이 문서 버그라고 말하고 싶습니다.
zwol

10
역사적인 포도는 건포도입니다!
James

2
마지막으로, Bash : single dash의 불공정 한 bash는 표준 POSIX 쉘 명령 행 옵션이므로 "무엇인가"에 가장 적합합니다. +같은있다 -"≠"같이하지만 교차를 통해 어떤 수단 "없습니다".
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

68

재정의 할 때마다 set +e/ 를 사용하는 것이 불편할 수 있습니다 set -e. 더 간단한 해결책을 찾았습니다.

이렇게하는 대신 :

set +e
command_that_might_fail_but_we_want_to_ignore_it
set -e

당신은 이렇게 할 수 있습니다 :

command_that_might_fail_but_we_want_to_ignore_it || true

또는 키 입력을 저장하고 약간 비밀스러운 것을 신경 쓰지 않으려면 :

command_that_might_fail_but_we_want_to_ignore_it || :

도움이 되었기를 바랍니다!


11
의 역사에 대해 궁금해하고 다른 누군가 궁금한 경우 여기: 에서 내 대답을 찾았습니다 .
3cheesewheel

4
이것은 실행중인 명령의 리턴 코드를 신경 쓰지 않는 경우에만 적용됩니다.
Isaac Isaac

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.