限制字串

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

刪除了前導標籤(但不包括內部標籤)。