Variáveis exportadas e aquelas definidas na mesma linha de comando são visíveis para o programa:
$ cat foo.sh
#!/bin/sh
echo "$foo"
$ foo=bar ./foo.sh
bar
$ export foo=bar
$ ./foo.sh
bar
Mas um idioma mais comum seria usar argumentos de linha de comando, eles são configurados para os parâmetros posicionais $1
, $2
, etc.
$ cat arg.sh
#!/bin/sh
echo "$1 and $2"
$ ./arg.sh alpha beta
alpha and beta
Ou use "$@"
para obter todos os argumentos da linha de comando, possivelmente depois de usar shift
para remover alguns fixos desde o início. Para argumentos nomeados,
provavelmente é melhor usar getopt
( página de manual ) ou getopts
( POSIX , tutorial no bash-hackers.org .
Em qualquer caso, um script robusto teria que lidar com o caso de algumas das variáveis estarem ausentes (não definidas).