如何在 bash 函數中使用heredoc?

如何在 bash 函數中使用heredoc?

是否可以插入一個特雷多克在 bash 函數中?

下面的簡單範例會導致錯誤:./heredoc_in_function.sh: 10: Syntax error: end of file unexpected (expecting "}")

#!/bin/sh

my_function () {
cat <<HEREDOC
heredoc contents
HEREDOC
}

my_function

環境:

  • Ubuntu 11.04(GNU/Linux 2.6.38-8-伺服器 x86_64)
  • GNU bash,版本 4.2.8(1)-release (x86_64-pc-linux-gnu)

答案1

你的程式碼對我來說看起來很好,所以我逐行複製了它,它對我有用:

  • OSX 10.7、bash 3.2.48(1)-發布 (x86_64-apple-darwin11)。
  • Ubuntu 10.04.3、bash 4.1.5(1)-發行版 (x86_64-pc-linux-gnu)

您是否可以手動重新輸入檔案以確保沒有遺失或新增空格/製表符/等?

另外,你是如何執行的?我做了一個chmod +x test.sh然後./test.sh

編輯:當我在結束 HEREDOC 的行開頭添加空格時,我收到了與您相同的錯誤。

進一步注意:結束後面的尾隨空格HEREDOC也可能導致這種情況

相關內容