bash: как получить доступ к «объявленной динамической переменной» в цикле for - PullRequest
0 голосов
/ 04 сентября 2018

У меня проблема с работой с динамически создаваемой переменной (имя)

BZ="b01 b02 b03"
[user:~]$ for i in $BZ; do echo $i ; declare status_$i=foobar_"$i" ; echo wrong:  $status_$i;done

Выход:

b01
wrong: b01
b02
wrong: b02
b03
wrong: b03

[user:~]$ echo $status_b01    $status_b02

Вывод ОК:

foobar_b01 foobar_b02

Переменная существует. Содержание не в порядке. Как я могу получить значения без использования явного имени $ status_b03? Мне нравится использовать что-то вроде $ status_ $ i (динамически создаваемое имя переменной).

Лучший Marc

1 Ответ

0 голосов
/ 04 сентября 2018

Для разыменования необходимо использовать переменную с именем переменной:

BZ="b01 b02 b03"
for i in $BZ
do
    echo "$i"
    declare status_$i=foobar_"$i"
    vname=status_$i
    echo "${!vname}"
done

Выход:

b01
foobar_b01
b02
foobar_b02
b03
foobar_b03
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...