Was ist die beste/übliche Vorgehensweise zum Einbinden einer Funktion, die von mehreren Skripten verwendet wird?

Was ist die beste/übliche Vorgehensweise zum Einbinden einer Funktion, die von mehreren Skripten verwendet wird?

Ich habe dies derzeit getan, indem ich eine Funktionsdatei mit allen meinen Funktionen in die verschiedenen Skripte eingefügt habe, die sie verwenden:

source ./functions.sh

Ein Nachteil, der mir aufgefallen ist, ist, dass die Zeilennummer, die Bash bei Syntaxfehlern ausgibt, nicht mehr mit der des Originalskripts übereinstimmt.

Antwort1

Die Art und Weise, wie Sie es verwenden, ist sinnvoll.
Ich kann Ihr Problem mit demBash-ShellIch könnte daran arbeiten (GNU Bash, Version 4.1.2 und GNU Bash, Version 4.3.11). Siehe unten:


Testskript go.sh. Sie können es ausführen mit, ./go.shnachdem Sie es ausführbar gemacht haben mit chmod u+x go.shsowie/bin/bash go.sh

echo  "   ### Here we start ###"  Script line 1
source my_sourced_file
echo Script line 3
casfsda    # this is the line 4 of script
echo Script line 5
f  "Script line #6 using the function from sourced file"
echo "   ### Here we finish ###" Script line 7

Datei mit Funktionen, die Sie im aktuellen Verzeichnis mit dem Namen ablegen müssen my_sourced_file:

echo Hello word this is the 1 line of my_sourced_file
f(){ echo Hello $1 ;}
f "Gustave line number 3 of  my_sourced_file"
echo linea 4 my_sourced_file

Ausgabe (inSchwarzder Fehler)

### Hier fangen wir an ### Skriptzeile 1
Hallo Welt, dies ist Zeile 1 von my_sourced_file
Hallo Gustave, Zeilennummer 3 von my_sourced_file,
Zeile 4 my_sourced_file
Skriptzeile 3
./go.sh: Zeile 4: casfsda: Befehl nicht gefunden
Skriptzeile 5
Hallo Skriptzeile Nr. 6 verwendet die Funktion aus der Quelldatei ### Hier sind wir fertig ### Skriptzeile 7

  • Getestet auf GNU Bash, Version 4.3.11
  • und auf alten GNU Bash, Version 4.1.2

verwandte Informationen