Как вывести строку другой строковой переменной оболочки

Как вывести строку другой строковой переменной оболочки

Мы хотели бы вывести значение переменной оболочки, в имени которой содержится другая строка переменной. Например:

мы хотим получить следующий результат

var1=1
var2=2

Мы попробовали несколько различных форм, похожих на ту, что ниже, но они не работают.

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

Как установить и вывести переменные оболочки, содержащие переменную строку в своем имени?

Спасибо

решение1

В bash (или ksh) вы можете использовать косвенный синтаксис ${!var}для ссылки на переменную, имя которой является значением $var. Это должно быть полное имя, поэтому вам нужно сделать это следующим образом:

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

решение2

Тыможетсделайте это, как объяснил @rici, но это редко бывает хорошей идеей. Вы могли бы добиться того же с более простым синтаксисом, если бы использовали массивы:

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

Связанный контент