参考链接
https://blog.csdn.net/zwlove5280/article/details/113609342
shell 展开中的进程替换可以说是非常难懂的一部分,它的语法为有两种
>(list) ##接受输入 看作一个整体,相当于文件描述
或
<(list) #接受输出
在 << The Linux Command Line>> 一书中提到了这样一个事,代码如下
echo david | read user
echo $user # 输出结果为空
通过管道把echo的输出作为read命令的输入,然后输入保存到user变量中,但是输出user变量的结果却为空。这是因为管道后的命令是在子shell中执行的
,因此当子shell执行完毕后,回到当前shell时,user变量是不可见的。
解决办法,使用输入重定向
read user <<< "david"
echo $user
总结
不管是>(list)语法,还是<(list)语法,其实我们就把它当作一个文件,这个文件包含list中的所有命令,并且这个文件是打开的,文件描述符为 /dev/fd/63。