LINUX.ORG.RU

Bash получение значения переменой (тип строка) в имени которой содержится переменна/


0

1

Добрый день! Столкнулась с такой проблемой: есть несколько переменных, которые содержат IP-адреса: address_0=192.168.0.50 address_1=192.168.0.51 address_2=192.168.0.52 ........... Мне необходимо в цикле получать значения этих переменных,то есть что-то типа такого $((address_$index)), но операция (()) подходила бы только, если бы мои переменные-адреса являлись бы числами, а не строкой, в которой, кроме цифр содержится еще "." Заранее спасибо за помощь!


>cat test.sh 
#!/bin/bash

echo "$1"

>./test.sh Съешь ещё этих мягких французских булок, да выпей йаду
Съешь
>./test.sh "Съешь ещё этих мягких французских булок, да выпей йаду"
Съешь ещё этих мягких французских булок, да выпей йаду

init_6 ★★★★★ ()
Последнее исправление: init_6 (всего исправлений: 1)
Ответ на: комментарий от Masha
> cat test.sh 
#!/bin/bash

y="Съешь ещё этих мягких французских булок, да выпей йаду"

for x in $y; do
	echo "$x";
done

> ./test.sh
Съешь
ещё
этих
мягких
французских
булок,
да
выпей
йаду
init_6 ★★★★★ ()
eval cur_ip=\$address_$index

или используй массивы

ananas ★★★★★ ()
#!/bin/bash
#
ADDRESS[0]="192.168.0.50";
ADDRESS[1]="192.168.0.51";
ADDRESS[2]="192.168.0.52";
#
for j in `seq 53 67`;
do
  i=$((${j}-50));
  ADDRESS[$i]="192.168.0.${j}";
done
#
for i in `seq 0 17`;
do
  echo ${i} -- ${ADDRESS[${i}]}; 
done
#
anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.