大括号和子壳

大括号和子壳

我想不通。正如我在文档中读到的那样,{}不会创建子外壳。然而,看起来有时确实如此:

  $ 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=

有什么不同?为什么第二种情况中缺少 T?

答案1

第二种情况有所不同,因为该管道在T_aft=$T未设置的子 shell 中运行。

相关内容