在 POSIX shell 中(在本例中我们考虑 bash),每当我们运行
cmd << eof
时,shell 都会等待输入,直到收到仅包含 eof
的字符串。此外,该标准还指出:
如果word [delimiter]的任何部分被引用,则分隔符是通过对word进行去引号形成的,并且此处文档行不会被扩展。否则,分隔符应为单词本身。
因此,出于好奇心,我尝试运行以下命令:
cat << ""
aaaa,但我无法使 shell 停止等待输入。我想引号被删除了,因为什么都没有留下,所以实际上没有任何东西是定界符的分隔符。
我尝试发送以下字符串:
"
、""
、\0
等
据我所知,退出的唯一方法是通过终止进程的信号。
我的问题是:有没有办法“正确”告诉 shell 在这种情况下停止等待输入?
cat << ""
(与许多语法突出显示例程相反)开始一个“段落”heredoc;第一个空行终止定界符:
cat << ""
included
lines
here
for
cat
$this_does_not_expand_even_though_you_used_double_quotes
# Back to the script
ls -la