限制字符串
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
删除了前导标签(但不包括内部标签)。