Linux 스크립트 명령으로 실행된 명령의 종료 코드를 가져옵니다.

Linux 스크립트 명령으로 실행된 명령의 종료 코드를 가져옵니다.

이것은 debian Linux 환경에서 실행 중입니다.

HelloWorld.sh라는 다음 샘플 스크립트가 있습니다.

#!/bin/bash

echo "Hello World"
exit 1

그런 다음 다음 명령을 실행합니다.

script -c ./HelloWorld.sh foo ; echo $?

$? 스크립트 명령 자체가 성공적으로 실행되었으므로 예상되는 0을 반환합니다. 그러나 다음 명령을 실행하면 1이 되는 반환 코드 HelloWorld.sh를 원합니다.

bash HelloWorld.sh ; echo $?

매뉴얼 페이지를 보면 스크립트 명령이 아무것도 반환하지 않으므로 다음도 도움이 되지 않는다는 것을 알 수 있습니다.

return_code=`script -c ./HelloWorld.sh foo`

제가 묻고 싶은 질문은 종료 값을 부모 셸로 보내는 것과 같이 스크립트 명령의 컨텍스트에서 실행할 때 HelloWorld.sh의 반환 값을 얻을 수 있는 방법이 있는지입니다. 그렇지 않다면 무엇을 하는 것이 좋나요?

스크립트 명령을 사용할 수 없는 경우 어떻게 할지에 대한 가능한 답변

  1. HelloWorld.sh가 shm API를 사용하여 공유 메모리에 쓰도록 허용
  2. HelloWorld.sh를 파일에 쓰기

두 가지 방법 모두 공유 메모리 개체와 파일을 별도로 정리해야 하므로 더 간단한 해결 방법이 있는지 개인적인 지식에 문의하고 싶습니다.

답변1

스크립트의 맨페이지

 -e, --return
         Return the exit code of the child process.  Uses the same format
         as bash termination on signal termination exit code is 128+n.

그래서 이것은 작동해야합니다

$ script -e -c ./HelloWorld.sh; echo $?
Script started, file is typescript
Hello World
Script done, file is typescript
1

답변2

인간 대본,

   -e, --return
          Return the exit code of the child process.  Uses the same format
          as bash termination on signal termination exit code is 128+n.

관련 정보