Eu defino algumas variáveis ​​de ambiente em um terminal e, em seguida, executo meu script. Como posso puxar as variáveis ​​no script? Preciso saber seus valores. Simplesmente referir-se a eles como $MY_VAR1
não funciona; ele está vazio.
Se as variáveis ​​forem realmente variáveis ​​de ambiente (ou seja, elas foram exportadas com
export
) no ambiente que invoca seu script, elas estarão disponÃveis em seu script. O fato de eles não existirem sugere que você não os exportou ou que você executa o script de um ambiente onde eles simplesmente não existem, mesmo como variáveis ​​de shell.Exemplo:
(uma linha vazia de saÃda, pois
hello
não existe em nenhum lugar)(ainda apenas uma linha vazia como saÃda, pois
hello
é apenas uma variável de shell, não uma variável de ambiente)Como alternativa, para definir a variável de ambiente apenas para este script e não no ambiente de chamada:
Você precisa garantir que exporte as variáveis ​​de ambiente às quais deseja ter acesso em seu script antes de invocar o script. IE:
Agora some_script.sh teria acesso a $MY_TEMP -- quando você invoca um script de shell, você obtém um novo ambiente, com apenas variáveis ​​exportadas, a menos que você o "fonte" precedendo o comando de script com um ponto (".") e um espaço, então o nome do seu script:
Dica de depuração: inclua próximo ao topo do seu script o
set
comando para ver quais variáveis ​​seu script pode ver.Observe também que, se você quiser que eles vivam apenas "pela duração da execução do script", você pode colocar as exportações deles em um arquivo e, em seguida, originar esse arquivo em seu script.
Porque quando você executa um script, ele será executado em um novo shell, desta forma essas variáveis ​​serão exportadas apenas para esse subshell (e seus descendentes) e não irão parar no seu próprio shell, ou seja, ficará como se você os desativa automaticamente após o término da execução do script.
Exemplo:
Agora execute-o:
e, em seguida, confirme se a variável SECRET não vazou em seu próprio shell: