이것은 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의 반환 값을 얻을 수 있는 방법이 있는지입니다. 그렇지 않다면 무엇을 하는 것이 좋나요?
스크립트 명령을 사용할 수 없는 경우 어떻게 할지에 대한 가능한 답변
- HelloWorld.sh가 shm API를 사용하여 공유 메모리에 쓰도록 허용
- 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.