Ist es möglich, einen Heredoc in eine Bash-Funktion einzufügen ?
Das folgende einfache 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
Umgebung:
- 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)
Antworten:
Ihr Code sah für mich gut aus, also habe ich ihn Zeile für Zeile kopiert und es hat bei mir funktioniert:
Ist es möglich, die Datei von Hand erneut einzugeben, um sicherzustellen, dass keine Leerzeichen / Tabulatoren / usw. fehlen?
Wie führen Sie es aus? Ich habe ein
chmod +x test.sh
und dann./test.sh
EDIT: Ich habe den gleichen Fehler wie Sie erhalten, als ich beim Schließen von HEREDOC ein Leerzeichen am Anfang der Zeile eingefügt habe.
Weiterer Hinweis:
HEREDOC
Dies kann auch durch ein Leerzeichen nach dem Schließen verursacht werdenquelle
HEREDOC
kann dies ebenfalls verursachen (Diese Art von Fehlern ist wirklich schwer zu finden.