这里字符串的结尾是什么?

这里字符串的结尾是什么?

在我看来,这里字符串的结尾是换行符。我意识到我错了:

$ cat <<< hello world
cat: world: No such file or directory

什么可以表示此处字符串的结束?

答案1

这里字符串的语法是:

<<< word

在哪里A单词是被 shell 视为一个单元的字符序列,由空格分隔。这可以是单个常规单词 ( hello)、单引号或双引号字符串 ( 'hello world', "hello world")、参数或命令替换 ( $foo, $(...))、用反斜杠转义符组装的内容或这些组合的组合。

您可以在一行上有多个此处文档或此处字符串,因此行尾不能用作仅有的分隔符,但如果还没有的话,它将在那里结束(除非换行符是反斜杠转义的)。

你会得到你想要的效果

cat <<<'hello world'

或者

cat <<<hello\ world

答案2

从手册中:

[n]<<<单词

结尾是一个词,而不是多个词。因此,在此示例中,第一个单词是helloand 终止此处字符串。下一个单词是world,它只是 的一个普通参数cat,并cat假设它是要读取的文件名。

你可以这样写得更清楚:

$ cat world <<< hello

相关内容