종료 코드 및 명령 출력 캡처

종료 코드 및 명령 출력 캡처

나하고 싶어:

1.sh:

#!/usr/bin/env bash
set -eu
r=0
a=$(./2.sh || r=$?)
echo "$a"
echo "$r"

2.sh:

#!/usr/bin/env bash
echo output
exit 2

그러나 다음과 같이 출력됩니다.

$ ./1.sh
output
0   # I'd like to have `2` here

$(...)별도의 쉘을 실행하기 때문에 . 그렇다면 종료 코드와 출력을 어떻게 캡처합니까?

답변1

다른 프로세스를 호출하는 프로세스의 종료 코드는 호출 프로세스의 종료 코드입니다.

$($($($($(exit 2)))))
echo $?
2

호출에는 5가지 레벨이 있습니다.

귀하의 경우:

r=0
a=$(./2.sh)
r=$?
echo "$a"
echo "$r"

관련 정보