限制字符串

heredoc 使用 limitstring 来确定何时停止使用输入。终止限制字符串必须

  • 在一条线的开头。
  • 是行中唯一的文本注意: 如果你使用 <<-,limitstring 可以以 tabs 为前缀\t

正确:

cat <<limitstring
line 1
line 2
limitstring

这将输出:

line 1
line 2

使用不正确:

cat <<limitstring
line 1
line 2
 limitstring

由于最后一行的 limitstring 并不完全在行的开头,因此 shell 将继续等待进一步的输入,直到它看到以 limitstring 开头并且不包含任何其他内容的行。只有这样它才会停止等待输入,然后继续将 here-document 传递给 cat 命令。

请注意,当你使用连字符为初始限制字符串添加前缀时,将在解析之前删除该行开头的所有选项卡,因此可以使用制表符缩进数据和限制字符串(以便于在 shell 脚本中读取)。

cat <<-limitstring
        line 1    has a tab each before the words line and has
            line 2 has two leading tabs
        limitstring

会产生

line 1    has a tab each before the words line and has
line 2 has two leading tabs

删除了前导标签(但不包括内部标签)。