LINUX.ORG.RU

Bash вложенный массив

 


0

1

Просьба помочь! имеется вложенный массив

id_equipment_num='5'
ip="728d25af6e8d:192.168.0.2,
  fb44c11c1f29:192.168.0.3,
  9e276580d749:192.168.0.4"

declare -A wow=(
  [$id_equipment_num]=$ip
)
IFS=,
for id_equipment in ${!wow[@]}
do
  for ip_equipment in ${wow[$id_equipment]}
  do
    echo $id_equipment $ip_equipment
  done
done

Результат:

  • 5 728d25af6e8d:192.168.0.2
  • 5 fb44c11c1f29:192.168.0.3
  • 5 9e276580d749:192.168.0.4

Необходимо разделить mac, и ip на переменные

echo $id_equipment $mac_equipment $ip_equipment 



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

cut -d разделитель -f часть

IPR ★★★★★
()

Во-первых, вывод у вас не совсем такой. А во-вторых, если вы действительно писали этот код, то уж разделить намного проще и аналогично и должны знать:

id_equipment_num='5'
ip="728d25af6e8d:192.168.0.2,
  fb44c11c1f29:192.168.0.3,
    9e276580d749:192.168.0.4"

declare -A wow=(
  [$id_equipment_num]=$ip
  )
IFS=$', \n'
for id_equipment in ${!wow[@]}
  do
    for ip_mac in ${wow[$id_equipment]}
      do
          IFS=: read mac_equipment ip_equipment <<< "$ip_mac"
          echo $id_equipment $mac_equipment $ip_equipment
    done
done

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
ip_equipment='9e276580d749:192.168.0.4'

read -d "\n" mac_equipment ip_equipment <<< "$(\
    for P in $(seq 1 1 2); do 
        eval cmd='"s,(^.+):(.+$),\\$P,p"'
        sed -nr $cmd <<< "$ip_equipment"
    done)"

echo $mac_equipment $ip_equipment
Rot1
()
Последнее исправление: Rot1 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.