終了コードとコマンド出力のキャプチャ

終了コードとコマンド出力のキャプチャ

私がしたい:

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"

おすすめ記事