Обмен переменными в нескольких сценариях оболочки

Я пытаюсь суммировать несколько сценариев оболочки в одном большом сценарии оболочки, например:

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

Все сценарии используют одни и те же переменные var и var2 . Я хотел бы удалить определения переменных из отдельных сценариев оболочки и поместить их в большой сценарий оболочки, поэтому, когда я изменяю значение переменных, мне нужно сделать это только один раз.

Однако, когда я это делаю

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

переменные не распознаются ссылками $var1 и $var2 в отдельных сценариях оболочки.

Извинения, если вопрос был задан раньше, я новичок в написании сценариев вообще и не знал, что искать.

Также было бы хорошо знать, как я мог бы перебирать скрипты с несколькими переменными входами, такими как

 var1="1 2 3 4 5" var2="abcde" for i in $var1;do for j in $var2;do script1.sh script2.sh done;done 

Когда вы запускаете скрипты 1-3 внутри вашего основного скрипта, каждый из них запускается внутри своей собственной под-оболочки, поэтому они не распознают переменные, определенные в их родительской оболочке. Используйте export чтобы сделать переменные доступными для суб-оболочек:

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

Альтернативой (релевантным для вашего второго вопроса) было бы передать переменные в сценарии в качестве позиционных параметров :

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

Внутри сценариев 1-3 эти переменные тогда будут доступны как $1 и $2 соответственно.