Экспортированные переменные и переменные, установленные в той же командной строке, видны программе:
$ 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
Или используйте "$@"
для получения всех аргументов командной строки, возможно, после использования shift
для удаления некоторых фиксированных с самого начала . Для именованных аргументов
вероятно, лучше использовать getopt
(справочная страница) или getopts
(POSIX, tutorial в bash-hackers.org ).
В любом случае, надежный сценарий должен иметь дело со случаем, когда некоторые переменные отсутствуют (не установлены).