私はサブシェルが彼らのstdoutが呼び出し側の出力を抑制持っていることを知っている:サブシェルのstderrが抑制またはリダイレクトされないのはなぜですか?
a:123
しかし、それはサブシェルでだとして、なぜ標準エラー出力が抑制されていません:予想通り、この出力
a=$(echo 123)
echo a:$a
?
(何)
実際の出力:ここ
123
は標準エラーがstdoutにリダイレクトする必要があり、変数a
に捕捉することが試験である:
a=$(>&2 echo 123)
a=$(>&2 echo 123 2>&1)
echo a:$a
期待出力:
a:123
実際の出力:
stderrはコマンド置換によってサブシェルからキャプチャできますか? – Zhro
厳密に言えば、いいえ。他のファイル記述子に標準出力をコピーし、標準エラーを標準出力にコピーし、元の標準出力をどうするかを決定するために、いくつかの歪曲を行う必要があります。 – chepner