Bashでローカルを使用するときにサブシェルの終了コードを取得する方法

Bashでローカルを使用するときにサブシェルの終了コードを取得する方法

この質問は他の人に非常に近いです。$(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独自の終了コードを持つ組み込みコマンドであるということです...変数の割り当て中にこれを避けると、サブシェルから終了コードが取得されます。

おすすめ記事