sh 명령의 종료 상태?

sh 명령의 종료 상태?

안녕하세요, 저는 다른 쉘 스크립트 내부에서 쉘 스크립트를 호출하고 있습니다. 스크립트 호출이 성공하면 계속해야 합니다. sh 명령을 사용하여 다른 스크립트를 호출합니다. 예를 들면 다음과 같습니다.

sh payloadjob.sh
if [[ $? -eq 0 ]]; then
    echo Success message 
else
    echo Failure message
fi

그러나 스크립트 호출이 성공하더라도 종료 상태 1이 제공되지만 성공하려면 0을 반환해야 합니다. 이런 일이 발생하는 이유는 무엇이며 sh 명령을 통한 스크립트 호출이 성공했는지 어떻게 알 수 있습니까?

답변1

payload.sh스크립트가 명시적 또는 로 exit 0종료 되지 않으면 exit 1종료 상태는 스크립트의 마지막 명령의 종료 상태가 됩니다.

마지막 명령이 실행된 경우(예: 찾을 수 없거나 삭제할 수 없는 경우) rm something 2>/dev/null종료 상태는 0이 아닙니다.something

표시되는 스크립트에서는 변수를 올바르게 테스트하고 있습니다 $?. 또한 테스트를 동등한 것으로 단순화할 수도 있습니다.

if sh payload.sh; then
    echo "Success"
else
    echo "Failure"
fi

관련 정보