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

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

#!/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 

One Solution collect form web for “Обмен переменными в нескольких сценариях оболочки”

Когда вы запускаете скрипты 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 соответственно.

  • Копирование / переименование нескольких файлов с использованием регулярного выражения (сценарий оболочки)
  • Не удалось выполнить запрос Curl из сценария Ansible playbook
  • Удалить все скобки в имени файла
  • Помогите с чтением скриптов из файла и определите, являются ли они четными или нечетными числами
  • Самый изящный способ прекратить навязчивую программу
  • Как заставить sed выполнять действия только в первом матче?
  • Как печатать IP / MASK из списка?
  • Что случилось с моим скриптом bash?
  • Как удалить любую строку из файла с помощью сценариев оболочки?
  • По умолчанию «Выполнить» при двойном щелчке по сценарию оболочки в PCManFM
  • команда sed не заменяет текст символом новой строки
  • Linux и Unix - лучшая ОС в мире.