这里文件的格式是:
<<[−]word
here-document
delimiter分隔符是否被接受这里的文档作为stdin输入的程序所看到和使用?
还是该分隔符仅由bash使用,而不被接受这里文档作为stdin输入的程序所看到和使用?
发布于 2016-03-01 03:37:57
是您的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看到的此处文档数据。
发布于 2016-03-01 03:31:07
不,外部程序没有看到它--只有运行脚本的shell才能看到并使用分隔符。
https://unix.stackexchange.com/questions/266652
复制相似问题