2 minutos
Declarar variável quando executa comando no terminal
Em sistemas Linux ou UNIX é bem comum vermos na documentação de softwares que
precisamos compilar, a declaração de uma variável antes do script de
configuração (configure.sh
) ou comando de build como modo debug
(DEBUG=1 make
). Neste post vou explicar com exemplos de scripts Shell
e Python.
Começamos com Shell, salvando o conteúdo do arquivo abaixo com o nome de
teste.sh
:
#!/bin/bash
echo $EXTERNA
Nota: se não entendeu o #!/bin/bash
e não sabe o que é Shebang,
pode descobrir no meu post “O que é Shebang?”
No script acima utilizamos a variável EXTERNA
, que não é declarada no
arquivo, então vamos declarar ela na hora de executar:
EXTERNA="funcionou" ./teste.sh
Quando executamos, percebemos que o valor de EXTERNA
que foi declarado antes
do nome do arquivo foi transferido para dentro do contexto de execução.
Se depois da execução do arquivo tentarmos imprimir a varável no terminal com o comando:
echo $EXTERNA
Veremos que não haverá retorno, por que sua declaração só é válida na
execução do arquivo teste.sh
, depois a variável volta a não existir.
Salva a excessão se ela já existir, ela volta ao seu valor original, perdendo o valor declarado na hora da execução do script.
Agora com Python, podemos ver um segundo cenário de utilização, apenas
declaramos uma variável chamada TESTE
com valor teste de variável
e
capturamos seu valor dentro do script Python com os.environ['TESTE']
:
TESTE="teste de variável" python -c "import os; print(os.environ['TESTE'])"
O resultado é o retorno do conteúdo da variável TESTE
.
Chegamos a conclusão que podemos declarar variáveis na mesma linha que executamos o comando, que ela estará disponível dentro do contexto de execução do comando/script e depois ela deixa de existir ou volta ao seu valor original.