GNU/Linux >> Znalost Linux >  >> Linux

Sdílení proměnných ve více skriptech Shell?

Snažím se shrnout více skriptů shellu do jednoho velkého skriptu shellu, jako je tento:

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

Všechny skripty sdílejí stejné proměnné var a var2 . Chtěl jsem smazat definice proměnných z jednotlivých skriptů shellu a vložit je místo toho do skriptu velkého shellu, takže když změním hodnotu proměnných, musím to udělat pouze jednou.

Nicméně, když to udělám

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

proměnné nejsou rozpoznány pomocí odkazů $var1 a $var2 v jednotlivých skriptech shellu.

Omlouvám se, pokud byla tato otázka položena již dříve, jsem ve skriptování obecně nový a nevěděl jsem, co mám hledat.

Bylo by také hezké vědět, jak bych mohl procházet skripty s více proměnnými vstupy, jako je

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

Přijatá odpověď:

Když spustíte skripty 1-3 v hlavním skriptu, každý z nich se spouští ve svém vlastním dílčím prostředí, což je důvod, proč nerozpoznají proměnné definované ve svém nadřazeném prostředí. Použijte export pro zpřístupnění proměnných podsložkám:

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

Alternativou (relevantní pro vaši druhou otázku) by bylo předání proměnných do skriptů jako poziční parametry:

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

Ve skriptech 1-3 budou tyto proměnné dostupné jako $1 a $2 respektive.


Linux
  1. Přizpůsobení prostředí Bash

  2. Zpracování chyb ve skriptech Bash

  3. Existují konvence pojmenování proměnných ve skriptech Shell?

  1. Jaké jsou speciální parametry/proměnné (bash) Shell?

  2. Jak zjistit, zda je trvání u více skriptů Shell delší než jedna hodina?

  3. Funkce v proměnných Shell?

  1. Neobvyklé způsoby použití proměnných uvnitř Bash skriptů

  2. Pochopení proměnných v Bash Shell pod Linuxem

  3. Jak napsat víceřádkový řetězec pomocí Bash s proměnnými?