Linux Bash命令;改为;使用重定向操作符的行为

Linux Bash命令;改为;使用重定向操作符的行为,linux,bash,process-substitution,Linux,Bash,Process Substitution,如果我执行以下命令: > read someVariable _ < <(echo "54 41") 结果是:54 处理替换的是什么 正如他解释的那样 流程替换将一个(或多个)流程的输出反馈到 另一进程的stdin 因此,实际上,这类似于一个命令到另一个命令的管道,例如,echo foobar barfoo | wc。但请注意:在[bash manpage][3]中,您将看到它被表示为请显示读取某个变量的输出u读取var1 var2将var1设置为输入的第一个“字”,并将va

如果我执行以下命令:

> read someVariable _ < <(echo "54 41")
结果是:
54

处理替换的是什么

正如他解释的那样

流程替换将一个(或多个)流程的输出反馈到 另一进程的stdin


因此,实际上,这类似于一个命令到另一个命令的管道,例如,
echo foobar barfoo | wc
。但请注意:在[bash manpage][3]中,您将看到它被表示为
请显示
读取某个变量的输出u
读取var1 var2
var1
设置为输入的第一个“字”,并将
var2
设置为第二个“字”。因此
read someVariable
someVariable
设置为第一个“单词”(在本例中为“54”),并将一个名为下划线的变量设置为第二个“单词”(“41”)。谢谢@GordonDavisson。问候。-为了完整起见,请注意
/dev/fd/63
的创建是流程替换的一个实现细节。
bash
的不同实现(例如,对于没有
/dev/fd
的平台)可能使用命名管道<代码>回声非常感谢Aman Gupta;现在这个概念更清楚了。也感谢您对@chepner的贡献。
> echo $someVariable
$ echo <(echo bar)
/dev/fd/63
$ wc < <(echo bar;echo foo)
      2       2       8
$ (echo foo;echo bar) | wc
      2       2       8
diff <(ls /bin) <(ls /usr/bin)