Apakah mungkin memasukkan heredoc ke dalam fungsi bash?
Sampel sepele di bawah ini menghasilkan kesalahan: ./heredoc_in_function.sh: 10: Syntax error: end of file unexpected (expecting "}")
#!/bin/sh
my_function () {
cat <<HEREDOC
heredoc contents
HEREDOC
}
my_function
Lingkungan Hidup:
- Ubuntu 11.04 (GNU / Linux 2.6.38-8-server x86_64)
- GNU bash, versi 4.2.8 (1) -release (x86_64-pc-linux-gnu)
Jawaban:
Kode Anda terlihat baik bagi saya, jadi saya menyalinnya baris demi baris dan berhasil bagi saya di:
Apakah mungkin bagi Anda untuk mengetik ulang file dengan tangan hanya untuk memastikan Anda tidak kehilangan atau menambahkan spasi / tabs / etc?
Juga, bagaimana Anda mengeksekusinya? Saya melakukan
chmod +x test.sh
dan kemudian./test.sh
EDIT: Saya menerima kesalahan yang sama seperti Anda ketika saya menambahkan spasi di awal baris dengan penutupan HEREDOC.
Catatan lebih lanjut: Ruang tambahan di belakang penutupan
HEREDOC
juga dapat menyebabkan inisumber
HEREDOC
juga dapat menyebabkan hal ini (Kesalahan semacam ini sangat sulit dilacak. Mendesah.)