我看到了一段 Unix 代码,但没有足够的背景来完全解读:
bash /dev/fd/3 3<< 'EOF'
上面的意思是什么3 3
?我知道什么是定界符、什么是 Bash、设备和 fd,但我不知道什么是3 空间 3...当我在谷歌中搜索引用的短语时,我基本上什么也没找到。
代码已给出这里作为一个特殊的heredoc,允许就地运行脚本(特别是那些已经包含内部heredocs和注释的脚本),而无需创建具有适当权限的文件...
Unix高手可以解释一下这是什么3 3
部分吗?谢谢你,
答案1
该短语是一种将此处文档传递到bash
0 以外的文件描述符的方法。即 3。
短语的第一部分 ,以文件描述符 3 作为输入base /dev/fd/3
运行,第二部分,告诉 shell 将 here-doc 写入该文件描述符。bash
3<< EOF
请注意,3<<
必须是单个标记,不带空格。
通过这样做,here-doc 脚本中的任何 stdin 读取都将读取真实输入(来自文件描述符 0),而不是 here-doc 本身。据我了解,如果不做这样的事情,here-doc 最终会成为内部 bash 的标准输入,在这种情况下它无法读取“真实输入”。