Wie verwende ich ein Heredoc innerhalb einer Bash-Funktion?

Wie verwende ich ein Heredoc innerhalb einer Bash-Funktion?

Ist es möglich, einehierdocinnerhalb einer Bash-Funktion?

Das folgende triviale Beispiel führt zu einem Fehler:./heredoc_in_function.sh: 10: Syntax error: end of file unexpected (expecting "}")

#!/bin/sh

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

my_function

Umfeld:

  • Ubuntu 11.04 (GNU/Linux 2.6.38-8-Server x86_64)
  • GNU Bash, Version 4.2.8(1)-Release (x86_64-pc-linux-gnu)

Antwort1

Ihr Code sah für mich gut aus, also habe ich ihn Zeile für Zeile kopiert und bei mir hat er funktioniert:

  • OSX 10.7, Bash 3.2.48(1)-Version (x86_64-apple-darwin11).
  • Ubuntu 10.04.3, Bash 4.1.5(1)-Version (x86_64-pc-linux-gnu)

Ist es Ihnen möglich, die Datei manuell erneut einzugeben, um sicherzustellen, dass Sie keine Leerzeichen/Tabulatoren usw. vergessen oder hinzugefügt haben?

Und wie führen Sie es aus? Ich habe ein chmod +x test.shund dann./test.sh

BEARBEITEN: Ich habe denselben Fehler wie Sie erhalten, als ich am Anfang der Zeile mit dem schließenden HEREDOC ein Leerzeichen hinzugefügt habe.

Weiterer Hinweis: Ein Leerzeichen hinter dem HEREDOCschließenden

verwandte Informationen