Declarar variável quando executa comando no terminal

  shell

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