Como gerar dinamicamente o nome da variável de ambiente e exportá-lo

4

Eu quero gerar dinamicamente o nome da variável de ambiente e definir o valor para essa variável. Eu escrevi um script de shell como abaixo.

temp="$(date +%s)"
echo $temp
export ${temp} = "Test value"
echo "Pass variable ${temp}"

No código acima, o timestamp gerado deve ser a chave e "Test value" é o valor para essa chave. Essa chave e valor precisam exportar para a sessão.

Como posso conseguir isso usando o script de shell?

    
por Santosh Hegde 02.02.2017 / 19:08

1 resposta

2

Você pode usar printf -v para criar variáveis dinamicamente, por exemplo:

temp=somename
echo $temp
printf -v $temp "Test value"
echo $somename

Isso produzirá "Valor de teste".

Observe que temp="$(date +%s)" não funcionará, porque a saída de $(date +%s) é numérica e os nomes de variáveis no Bash não podem começar com um número. Você teria que dar um prefixo não numérico, por exemplo:

temp="t$(date +%s)"

Para exportar a variável, você pode simplesmente fazer:

export $temp

Veja um exemplo completo, com a prova de que a variável é realmente exportada no ambiente:

temp=t$(date +%s)
echo $temp
printf -v $temp "Test value"
export $temp
sh -c "echo $$temp"

Saídas por exemplo:

t1486060416
Test value
    
por janos 02.02.2017 / 19:14