bash /dev/fd/3 3< 'EOF' 中的 3 3 是什么意思

bash /dev/fd/3 3< 'EOF' 中的 3 3 是什么意思

我看到了一段 Unix 代码,但没有足够的背景来完全解读:

bash /dev/fd/3 3<< 'EOF'

上面的意思是什么3 3?我知道什么是定界符、什么是 Bash、设备和 fd,但我不知道什么是3 空间 3...当我在谷歌中搜索引用的短语时,我基本上什么也没找到。

代码已给出这里作为一个特殊的heredoc,允许就地运行脚本(特别是那些已经包含内部heredocs和注释的脚本),而无需创建具有适当权限的文件...

Unix高手可以解释一下这是什么3 3部分吗?谢谢你,

答案1

该短语是一种将此处文档传递到bash0 以外的文件描述符的方法。即 3。

短语的第一部分 ,以文件描述符 3 作为输入base /dev/fd/3运行,第二部分,告诉 shell 将 here-doc 写入该文件描述符。bash3<< EOF

请注意,3<<必须是单个标记,不带空格。

通过这样做,here-doc 脚本中的任何 stdin 读取都将读取真实输入(来自文件描述符 0),而不是 here-doc 本身。据我了解,如果不做这样的事情,here-doc 最终会成为内部 bash 的标准输入,在这种情况下它无法读取“真实输入”。

相关内容