LINUX.ORG.RU
ФорумAdmin

Вопрос по Bash и переменным

 


1

4

Привет всем! Помогите, не могу разобраться. Есть цикл, в зависимости от значения переменной i нужно формировать новую переменную

for i in 1 2 3 4 5 6 7; do
test$i=10
done

Или как правильно это сделать?


Или как правильно это сделать?

Через eval

anonymous ()
for i in 1 2 3 4 5 6 7; do
    eval test$i=10
done
joy4eg ★★★★★ ()
Ответ на: комментарий от kostik87

Если $i — действительно целое число, то совет использовать ассоциативный массив выглядит странным.

declare -a test
 
for i in 1 2 3 4 5 6 7; do
  test[$i]=10
done

echo ${test[5]}

и так далее.

Zmicier ★★★★★ ()
Последнее исправление: Zmicier (всего исправлений: 2)
Ответ на: комментарий от kostik87

нужна переменная с именем test$i, т.е. например test5.

Тогда

for i in 1 2 3 4 5 6 7; do
    printf -v "test$i" 10
done

echo $test5

Но вообще это выглядит лютовато. Если только это не для совместимости с чем-либо, правильно использовать плоский массив.

Zmicier ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.