서브셸 종료 코드는 로깅에 영향을 미칩니다.

서브셸 종료 코드는 로깅에 영향을 미칩니다.

이 bash 스크립트가 있습니다.

echo "x" & X=$!
echo "y" & Y=$!
( echo "z" ; exit 0; ) & Z=$!  # this line

wait ${X} && echo "X $?" 
wait ${Y} && echo "Y $?" 
wait ${Z} && echo "Z $?" 

종료 0을 종료 1로 변경하면 스크립트의 마지막 에코 문이 실행되지 않습니다. 예를 들어 종료 코드가 0일 때의 출력은 다음과 같습니다.

x
X 0
z
y
Y 0
Z 0

하지만 1로 변경하면 다음과 같습니다.

x
y
X 0
z
Y 0

나는 괄호 안의 내용이 서브쉘에서 실행되어야 한다고 가정합니다. 내 코드가 왜 이런 일을 하는지 아는 사람이 있나요?

답변1

다음 문서에 설명되어 있습니다 help wait.

ID의 상태를 반환합니다.

따라서 프로세스가 종료되면 1wait는 두 번째 명령을 실행하지 않고 반환 1하고 &&단락시킵니다. 첫 번째 명령의 성공 여부에 관계없이 값을 인쇄하려면 ;대신 시도하십시오.&&

관련 정보