Verwalten mehrerer Konstanten für mehrere Bash-Skripte

Verwalten mehrerer Konstanten für mehrere Bash-Skripte

Ich habe mehrere einzelne Bash-Skripte. Sie machen unterschiedliche Dinge und sind groß (jeweils 70-100 Zeilen). Deshalb habe ich sie in separaten Dateien gespeichert. Aber sie beziehen sich alle auf ein zentrales Problem und haben daher mehrere gemeinsame Konstantenwerte.

Der Einfachheit halber habe ich zehn konstante Variablen, einige davon sind Zeichenfolgen, einige sind Zahlen und zwei sind Arrays, die alle in zehn verschiedenen Bash-Skripten verfügbar sein müssen. Wie erreiche ich das?

Beachten Sie, dass es zwar eine zentrale Zentrale gibt main.sh, die diese einzelnen Bash-Skripte aufrufen kann, dies jedoch nicht immer der Fall ist. Sie können auch direkt von der Befehlszeile aus aufgerufen werden ( ./script1.sh). Auch in diesem Fall sollten die Variablen den Skripten zur Verfügung gestellt werden.

Die einzige Möglichkeit, die mir einfiel, bestand darin, in Dateien zu codieren und jedes Mal, wenn ich eine Datei ausführen muss, ein Bash-Skript dev/script1.temp.shauszuführen, das einfach (über ) alle Vorkommen einer bestimmten Konstante ( ) in der gesamten Datei ersetzt, um zu erzeugen .build.shgrep$CONSTANTbuild/script1.sh

Antwort1

constants.envLegen Sie beispielsweise alle Konstanten in einer Datei ab . Und . constants.envladen Sie sie in allen Skripten, die eine dieser Konstanten verwenden, mit put.

Zum Beispiel, constants.env:

HELLO=world

script.sh

#!/bin/bash
. constants.env
echo $HELLO

Ausführen des Beispiels:

$ ./script.sh 
world

verwandte Informationen