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

мы хотим следующий вывод

var1=1
var2=2

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

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

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

Спасибо

2 ответа2

3

В 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
0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .