
Мы хотели бы вывести значение переменной оболочки, в имени которой содержится другая строка переменной. Например:
мы хотим получить следующий результат
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