这里文档的格式是:
<<[−]word
here-document
delimiter
将此处文档作为标准输入的程序是否会看到并使用分隔符?
或者分隔符仅由 bash 使用,而不会被将此处文档作为标准输入输入的程序看到和使用?
答案1
不,外部程序看不到它 - 分隔符只能由运行脚本的 shell 看到和使用。
答案2
这是您的 shell 使用了此处文档分隔符,外部程序对此没有任何概念。
外壳做到了令牌识别并将此处文档数据传递给程序。
与strace
:
$ strace -s 10 -e read cat <<-IN
1
IN
read(3, "\177ELF\2\1\1\3\0\0"..., 832) = 832
read(0, "1\n", 131072) = 2
1
read(0, "", 131072) = 0
+++ exited with 0 +++
您只能看到 所看到的此处文档数据cat
。