Se você tem confiança na saída do seu comando rhc, você pode simplesmente fornecer:
. <(rhc env list -a <app-name>)
Isto irá fornecer (executar) cada linha que rhc
produz.
Como escrito, o código acima define as variáveis, mas não as exporta. Nós poderíamos consertar isso, mas o código abaixo é mais seguro e faz a exportação.
O comando de origem, .
, espera um arquivo como um argumento. Para converter a saída de rhc
em um objeto semelhante a um arquivo, usamos substituição de processo : <(...)
.
Para ser mais seguro, use:
while read -r line; do declare -x "$line"; done < <(rhc env list -a <app-name>)
Aqui, usamos a substituição de processo, <(...)
, combinada com o redirecionamento de entrada, <
, para que o loop while
seja lido na saída de rhc
. O espaço entre o primeiro e o segundo <
é essencial: do não omita-o.
A opção -x
para declare
diz ao bash para exportar a variável.
Alterar a ordem
Como comentário abaixo, o comando rhc
pode ser colocado na linha acima do while
loop via:
tmpvar=$(rhc env list -a <app-name>)
while read -r line; do declare -x "$line"; done <<<"$tmpvar"
<<<
cria uma string aqui . Nesse caso, significa que o $tmpvar
é fornecido como entrada para o loop while
.