Suj*_*dke 11 bash redirect input
有人可以解释一下mapfile输入重定向的这种语法吗?
mapfile -t array < <(./inner.sh)
Run Code Online (Sandbox Code Playgroud)
(来自此StackOverflow的回答,由gniourf_gniourf提供)
据我所知,第一个"<"是从右侧的输出中获取输入.但是什么是<(...)语法?为什么需要第二个"<"?
Eta*_*ner 14
链接示例的原因如下:
wc <(cat /usr/share/dict/linux.words)
Run Code Online (Sandbox Code Playgroud)
和映射文件的回答是这样的:
mapfile -t array < <(./inner.sh)
Run Code Online (Sandbox Code Playgroud)
是因为wc和mapfile命令的区别以及如何将替换过程赋予命令.
正如anishsane所说,扩展<(command)是一个文件名,可以在任何地方使用文件名.
wc 将文件名作为参数,因此可以直接用作参数.
mapfile从标准输入读取,以便从您使用的特定文件中读取您从文件重定向标准输入,</path/to/somefile但正如我刚才所说的扩展<(command)是一个文件名,因此您可以在输入重定向中使用它.
但是,您不能直接连接两个位(使用文件名/路径的方式),因为<<它也是一个有效的shell构造(这里是一个文档),这对shell来说是不明确的.所以为了避免这种情况,你需要将这两个<字符分开并最终得到< <(command)(这类似于< file完全合法).