Bash语法mapfile输入重定向

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)

是因为wcmapfile命令的区别以及如何将替换过程赋予命令.

正如anishsane所说,扩展<(command)是一个文件名,可以在任何地方使用文件名.

wc 将文件名作为参数,因此可以直接用作参数.

mapfile从标准输入读取,以便从您使用的特定文件中读取您从文件重定向标准输入,</path/to/somefile但正如我刚才所说的扩展<(command)是一个文件名,因此您可以在输入重定向中使用它.

但是,您不能直接连接两个位(使用文件名/路径的方式),因为<<它也是一个有效的shell构造(这里是一个文档),这对shell来说是不明确的.所以为了避免这种情况,你需要将这两个<字符分开并最终得到< <(command)(这类似于< file完全合法).