GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gemeinsame Nutzung von Variablen über mehrere Shell-Skripte hinweg?

Ich versuche, mehrere Shell-Skripte in einem großen Shell-Skript zusammenzufassen, wie zum Beispiel:

#!/bin/sh
bash script1.sh
bash script2.sh
bash script3.sh

Alle Skripte teilen sich die gleichen Variablen var und var2 . Ich wollte die Variablendefinitionen aus den einzelnen Shellskripten löschen und stattdessen in das große Shellskript einfügen, damit ich das nur einmal tun muss, wenn ich den Wert der Variablen ändere.

Allerdings, wenn ich es tue

#!/bin/sh
var1="1"
var2="2"
bash script1.sh
bash script2.sh
bash script3.sh

die Variablen werden nicht durch die Referenzen $var1 erkannt und $var2 in den einzelnen Shell-Skripten.

Entschuldigung, falls die Frage schon einmal gestellt wurde, ich bin neu in der Skripterstellung im Allgemeinen und wusste nicht, wonach ich suchen sollte.

Es wäre auch schön zu wissen, wie ich die Skripte mit mehreren variablen Eingaben wie

durchlaufen könnte
var1="1 2 3 4 5"
var2="a b c d e"
for i in $var1;do for j in $var2;do
script1.sh
script2.sh
done;done

Akzeptierte Antwort:

Wenn Sie die Skripte 1-3 in Ihrem Hauptskript ausführen, werden sie jeweils in ihrer eigenen Sub-Shell ausgeführt, weshalb sie die in ihrer übergeordneten Shell definierten Variablen nicht erkennen. Verwenden Sie export um Variablen für Sub-Shells verfügbar zu machen:

#!/bin/sh
export var1="1"
export var2="2"
bash script1.sh
bash script2.sh
bash script3.sh

Eine Alternative (relevant für Ihre zweite Frage) wäre, die Variablen als Positionsparameter an die Skripte zu übergeben:

#!/bin/sh
var1="1"
var2="2"
bash script1.sh "$var1" "$var2"
bash script2.sh "$var1" "$var2"
bash script3.sh "$var1" "$var2"

In den Skripten 1-3 wären diese Variablen dann als $1 verfügbar und $2 bzw..


Linux
  1. Anpassen der Bash-Shell

  2. Fehlerbehandlung in Bash-Skripten

  3. Gibt es Namenskonventionen für Variablen in Shell-Skripten?

  4. Wie kann man feststellen, ob eine Dauer in mehreren Shell-Skripten über einer Stunde liegt?

  5. Wie führe ich einen Befehl mehrmals mit der Bash-Shell aus?

Kommentare in Bash-Skripten schreiben

.bashrc vs. .bash_profile

Shell-Scripting für Anfänger – So schreiben Sie Bash-Scripts unter Linux

Welches sind die speziellen Parameter/Variablen der (Bash-)Shell?

Funktionen in Shell-Variablen?

Bash Beginner Series #2:Variables in Bash Shell Scripting verstehen