如果定界符为“”,如何使命令停止等待输入?

问题描述 投票:0回答:1

在 POSIX shell 中(在本例中我们考虑 bash),每当我们运行

cmd << eof
时,shell 都会等待输入,直到收到仅包含
eof
的字符串。此外,该标准还指出:

如果word [delimiter]的任何部分被引用,则分隔符是通过对word进行去引号形成的,并且此处文档行不会被扩展。否则,分隔符应为单词本身。

因此,出于好奇心,我尝试运行以下命令:

cat << ""
aaaa,但我无法使 shell 停止等待输入。我想引号被删除了,因为什么都没有留下,所以实际上没有任何东西是定界符的分隔符。

我尝试发送以下字符串:

"
""
\0

据我所知,退出的唯一方法是通过终止进程的信号。

我的问题是:有没有办法“正确”告诉 shell 在这种情况下停止等待输入?

bash shell posix heredoc
1个回答
0
投票

cat << ""
(与许多语法突出显示例程相反)开始一个“段落”heredoc;第一个空行终止定界符:

cat << ""
included
lines
here
for
cat
$this_does_not_expand_even_though_you_used_double_quotes

# Back to the script
ls -la
© www.soinside.com 2019 - 2024. All rights reserved.