나하고 싶어:
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"