Como posso passar a variável no script via terminal quando executar abc.sh

5

Eu quero passar a variável no script no momento da execução

ex: sh abc.sh export id=3

    
por Vinod 22.06.2017 / 15:53

3 respostas

9

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).

    
por 22.06.2017 / 16:50
5

Você pode fazer isso (somente para esta execução) desta maneira:

id=3 sh abc.sh 
    
por 22.06.2017 / 15:55
2

declare (ou exporte, não necessariamente aqui) antes da execução:

id=3 ./myScript.sh

myScript.sh:

#!/bin/bash

echo "id = $id"

Saída:

id = 3
    
por 22.06.2017 / 15:57