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)