Bash - schreiben Funktionsdefinition im Skript nach dem ersten Anruf (GEHE zu/springe-Problematik)

Ich im Grunde möchten, schreiben Sie mir ein bash-script, wo ich generieren, ein paar große Dateien mit heredoc; und dann führen Sie einige Befehle, mit denen Dateien.

Ist es selbstverständlich, dass (natürlich) die heredoc-Dateien müssen erzeugt werden, bevor die Befehle ausgeführt werden - was allerdings irritiert mich, dass in Anordnung ist, muss ich auch schreiben, die "heredoc" - Aussagen-code vor Schreibe ich den Befehl code.

So, ich dachte, ich würde schreiben Sie die heredoc-Anweisungen in einer Funktion - aber immer noch das gleiche problem hier: Kapitel 24. Funktionen sagt:

Die Funktionsdefinition muss vor dem ersten Aufruf an. Es gibt keine Methode der "Deklaration" die Funktion, wie zum Beispiel in C.

In der Tat, es ist so:

$ cat > test.sh <<EOF
testo

function testo {
  echo "a"
}
EOF

$ bash test.sh 
test.sh: line 1: testo: command not found

Dann dachte ich, vielleicht könnte ich einige labels und springen um mit GOTO wie in (pseudocode):

$ cat > test.sh <<EOF
goto :FUNCLABEL

:MAIN
testo

goto :EXIT

:FUNCLABEL
function testo {
  echo "a"
}
goto MAIN

:EXIT

... aber es stellt sich heraus BASH goto nicht existieren.

Mein einziges Ziel ist es, dass - ich will zuerst schreiben der "Kern" der Skript-Datei, die einige fünf-sechs-Befehle; und nur dann schreiben Sie die heredoc-Anweisungen in der script-Datei (die haben Hunderte von Zeilen); mit dem heredocs ersten wirklich macht das Lesen des Codes schwer für mich. Gibt es irgendeine Möglichkeit das zu erreichen?

InformationsquelleAutor sdaau | 2011-11-23
Schreibe einen Kommentar