대화식 bash 쉘에서 set -e
을 입력 한 후 명령이 0이 아닌 경우 bash가 즉시 종료됩니다. 이 효과를 어떻게 취소 할 수 있습니까?명령이 실패 할 경우 즉시 bash 종료를 발생시키는 "set -e"효과를 취소하는 방법
답변
set +e
. 그래, 뒤로 set -
및 으로 쉘 옵션을 사용 설정하면 set +
을 사용하여을 사용 중지합니다. 역사적인 건포도, donchanow.
- + 대신 -를 사용하면이 플래그가 꺼집니다.
이 set +e
/set -e
당신이 그것을 오버라이드 (override) 할 때마다 사용하는 손재주가 될 수 있습니다. 나는 더 간단한 해결책을 발견했다. 당신은 키 입력을 저장할와 비밀 조금되는 괜찮다면,
command_that_might_fail_but_we_want_to_ignore_it || true
또는 :
대신 다음과 같이 그 일의 :
set +e
command_that_might_fail_but_we_want_to_ignore_it
set -e
당신은 이런 식으로 작업을 수행 할 수 있습니다 :
command_that_might_fail_but_we_want_to_ignore_it || :
희망이 있습니다.
':'의 역사에 대해 궁금해하고 제 대답을 찾았습니다. (http://stackoverflow.com/a/3224910/1094541) 다른 사람이 호기심이있는 경우에 대비해서. – 3cheesewheel
이것은 실행중인 명령의 리턴 코드에 대해 신경 쓰지 않는 경우에만 적용됩니다. – Isaac
대단히 감사합니다. 매뉴얼 페이지 (http://www.faqs.org/docs/bashman/bashref_56.html)의 맨 마지막 줄에있는 내용으로 끝까지 읽지 않았습니다. –
bash 매뉴얼은 엄청나게 크며 사실입니다. (FYI, 당신이 새 것처럼 보입니다. 귀하의 질문에 가장 잘 맞는 답안 아래에있는 체크 마크를 클릭하는 것이 완료되었습니다. 이것을 "수락"이라고합니다.) – zwol
그리고'set [--abefhkmnptuvxBCHP] [- o 옵션] [인수 ...]'정말 오해의 소지가 있습니다. 나는 단순히 언두가 다른 내장 명령자에 의해 행해지고, 설정되지 않았으며 아무것도 얻지 못했다고 가정했다. 흥미로운 것은 bash에서'set'과'unset'은 반대가 아니지만, 현재 제가 배시 프로그래밍에 대해 거의 알지 못한다는 것을 인정합니다. –