私はそれを理解することはできません。私がドキュメンテーションで読んだように、{}
はサブシェルを作成しません。ただし、そのように見えることもあります。
$ unset T; echo "T_bfr=$T"; echo $$; { echo $$; export T=1; }; echo "T_afr=$T"
T_bfr=
4874
4874
T_afr=1
$ unset T; echo "T_bfr=$T"; echo $$; { echo $$; export T=1 ; }|cat; echo "T_afr=$T"
T_bfr=
4874
4874
T_afr=
違いはなんですか? 2番目のケースでTが欠落しているのはなぜですか?
2番目のケースは、パイプがサブシェルで実行されるため異なります。ここで、T_aft=$T
は設定されていません。