@Valeriu147

Как сделать инкремент для значения в ассоциативном массиве bash?

Добрый день. Есть небольшой ассоциативный массив с большым количеством значений и ключей. Так вот, появилась мысль его упростить с помощью инкрементации значений.

Сам массив:

declare -A host
host[192.168.1.1]='test1.ru'
host[192.168.1.2]='test2.ru'
host[192.168.1.3]='test3.ru'
host[192.168.1.4]='test4.ru'
host[192.168.1.5]='test5.ru'


Как бы так выкрутиться, что бы не писать имя сайта, каждый раз.

Я пробовал так

first = 1
host[192.168.1.1]='test$first.ru'


Но на выходе я и получаю

host[192.168.1.1]='test$first.ru'

Не могли бы подсказать, что можно предпринять в данной ситуации. Спасибо за внимание.
  • Вопрос задан
  • 337 просмотров
Решения вопроса 1
в строке нужно экранировать переменную с помощью фигурных скобок
first=1
echo "test${first}.ru"
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Kevin1
Можно еще немного упростить:
#! /bin/bash

declare -A host
for i in $(seq 1 5); do
eval host[192.168.1.$i]="test${i}.ru"
done

echo ${host[*]}
На выходе:
test4.ru test5.ru test1.ru test2.ru test3.ru
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы