私がしたい:
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"