LINUX.ORG.RU
ФорумAdmin

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

 


1

4

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

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

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



Последнее исправление: fet4 (всего исправлений: 1)

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

Через eval

anonymous
()
Ответ на: комментарий от kostik87

Благодарочка Вам то что нужно)

fet4
() автор топика
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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.