나는 Ubuntu (clear)에서 sh
( )를 사용하고 dash
있으며 맨페이지에는 다음과 같이 나와 있습니다 -e
.
-e errexit 대화형이 아닌 경우 테스트되지 않은 명령이 실패하면 즉시 종료합니다. 명령의 종료 상태는 명시적으로 테스트된 것으로 간주됩니다. if 명령은 if, elif, while 또는 Until을 제어합니다. 명령이 "&&" 또는 "||"의 왼쪽 피연산자인 경우 Opera - 토르.
백그라운드 명령이 실패하면 어떻게 되나요? bash
이와 관련하여 성능이 달라지나요?
답변1
이것을 테스트하는 것은 매우 간단합니다. 그리고 -e
:
% bash -e -c 'false & echo waiting; if wait $!; then echo success; else echo failure; fi'
waiting
failure
따라서 백그라운드 명령이 실패하면 쉘이 자동으로 종료되지 않습니다( -e
이것은 충분하지 않습니다).
wait
명시적 테스트 외부에 있는 경우 wait
실패한 백그라운드 프로세스의 반환 코드가 반환됩니다. 이 경우 -e
지정된 경우 쉘이 종료됩니다.
% bash -e -c 'false & echo waiting; wait $!; echo returned'
waiting
bash
또는 와 같은 결과입니다 sh
.zsh