Как передать переменную в скрипте через терминал при выполнении abc.sh

Я хочу передать переменную в скрипте во время выполнения

ex: sh abc.sh export id=3

Экспортируемые переменные и те, которые установлены в одной командной строке, видны программе:

 $ cat foo.sh #!/bin/sh echo "$foo" $ foo=bar ./foo.sh bar $ export foo=bar $ ./foo.sh bar 

Но более распространенной идиомой будет использование аргументов командной строки, они будут установлены на позиционные параметры $1 , $2 и т. Д.

 $ cat arg.sh #!/bin/sh echo "$1 and $2" $ ./arg.sh alpha beta alpha and beta 

В обоих случаях надежный скрипт должен иметь дело с тем, что некоторые из переменных отсутствуют (не заданы).

Вы можете сделать это (только для этого выполнения) следующим образом:

 id=3 sh abc.sh 

объявлять (или экспортировать, не обязательно здесь) перед исполнением:

 id=3 ./myScript.sh 

myScript.sh:

 #!/bin/bash echo "id = $id" 

Вывод:

 id = 3