Como ecoar uma string de outra variável de shell de string

0

Gostaríamos de ecoar o valor de uma variável de shell que possui outra variável no seu nome de variável. por exemplo:

queremos a seguinte saída

var1=1
var2=2

Nós tentamos várias formas diferentes, mas não funcionam

for j in {1..2}
do
   export var${j}=$j
   echo "var${j}=${var${j}}"
done 

Como definimos e echo as variáveis do shell que contêm a variável no seu nome?

Obrigado

    
por chz 15.04.2015 / 23:50

2 respostas

3

No bash (ou ksh), você pode usar a sintaxe indireta ${!var} para referenciar a variável cujo nome é o valor de $var . Tem que ser o nome completo, então você tem que fazer assim:

for j in {1..2}; do
   # This could have been declare instead of export if you don't need
   # to export the variable.
   export var${j}=$j
   varname=var$j
   echo "var${j}=${!varname}"
done
    
por 16.04.2015 / 00:50
0

Você pode fazer isso como explicado @rici, mas raramente é uma boa ideia. Você pode conseguir a mesma coisa com uma sintaxe mais simples se usar matrizes:

var=("1" "2");
for j in {0..1}
do
    echo "var$j : ${var[$j]}"
done
    
por 18.04.2015 / 15:20