我正在尝试在Mac zsh shell中进行一些重定向。
我看到echo <(echo $c)
输出/dev/fd/11
。我不知道为什么会这样。有人可以解释吗?
注意:$c
是否初始化无关紧要。
echo < ''
返回zsh: no such file or directory:
,所以我不知所措。
答案 0 :(得分:2)
进程扩展有效地“扩展”为文件名。您正在将该文件名作为参数传递给echo
,它会忠实地写回到标准输出。如果你写过
cat <(echo $c)
正如我想的那样,您将获得命令echo $c
的输出,因为cat
将打开/dev/fd/11
进行读取并输出其内容。
答案 1 :(得分:0)
从这里得到答案 https://unix.stackexchange.com/questions/17107/process-substitution-and-pipe
看起来像<(COMMAND)
与<
(STDIN重定向)命令稍有不同
管道和输入重定向将内容推送到STDIN流上。处理 替换运行命令,将其输出保存到特殊的 临时文件,然后传递该文件名代替命令。 无论您使用什么命令,都将其视为文件名。请注意 创建的文件不是常规文件,而是已删除的命名管道 不再需要时自动