この質問は他の人に非常に近いです。$(command)で始まるサブシェルから終了コードを取得できますか?
しかし、この例のように、localとevalを使用すると、サブシェルから終了コードを取得できるソリューションが見つかりませんでした。
test() {
> local WHY="$(eval "echo 'test'"; exit 3)"; echo $?
> }
test
0
答え1
簡単です。単一のコマンドを使用せずに分割して使用してください。
test() {
local why
why="$(eval "echo 'test'"; exit 3)"; echo $?
}
test
3
問題は、これがlocal
独自の終了コードを持つ組み込みコマンドであるということです...変数の割り当て中にこれを避けると、サブシェルから終了コードが取得されます。