그녀는 &와 어떻게 상호 작용합니까?

그녀는 &와 어떻게 상호 작용합니까?

나는 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

관련 정보