Variáveis compostas em shell script
Dica publicada em Shell Script / Variáveis
Variáveis compostas em shell script
Em alguns momentos em nossas vidas nos deparamos com situações inesperadas.
Ao tentar ajudar um colega do VOL, este tinha o seguinte problema, queria que a combinação de duas variáveis formassem o nome de uma terceira e esta sim seria resolvida e utilizada.
Para tornar mais fácil o entendimento, vou mostrar exatamente o exemplo dele:
Neste caso ao escolher a opção 1, por exemplo o resultado será $nome1, e o que ele queria é que a variável $nome1 fosse resolvida e mostrasse o nome correspondente.
Diversas foram as soluções, algumas bem interessantes até, mas que mudam a lógica para prover esse dado ...
Uma solução bem simples para quando você que forçar a resolução dos argumentos, é o "EVAL".
Neste caso o "eval" força uma nova resolução da variável.
Como acho que isso pode se aplicar em outros casos e possa ser útil ... vai a dica.
Ao tentar ajudar um colega do VOL, este tinha o seguinte problema, queria que a combinação de duas variáveis formassem o nome de uma terceira e esta sim seria resolvida e utilizada.
Para tornar mais fácil o entendimento, vou mostrar exatamente o exemplo dele:
#!/bin/sh
echo "Digite o numero 1 ou 2:"; read numero
nome1="ANDRE"
nome2="MARCELO"
nome_numero='$nome'$numero
echo $nome_numero
echo "Digite o numero 1 ou 2:"; read numero
nome1="ANDRE"
nome2="MARCELO"
nome_numero='$nome'$numero
echo $nome_numero
Neste caso ao escolher a opção 1, por exemplo o resultado será $nome1, e o que ele queria é que a variável $nome1 fosse resolvida e mostrasse o nome correspondente.
Diversas foram as soluções, algumas bem interessantes até, mas que mudam a lógica para prover esse dado ...
Uma solução bem simples para quando você que forçar a resolução dos argumentos, é o "EVAL".
#!/bin/sh
echo "Digite o numero 1 ou 2:";read numero
nome1="ANDRE"
nome2="MARCELO"
nome_numero='$nome'$numero
eval "echo $nome_numero"
echo "Digite o numero 1 ou 2:";read numero
nome1="ANDRE"
nome2="MARCELO"
nome_numero='$nome'$numero
eval "echo $nome_numero"
Neste caso o "eval" força uma nova resolução da variável.
Como acho que isso pode se aplicar em outros casos e possa ser útil ... vai a dica.