Faz um loop através de um array multidimensional no bash 4

3

Eu quero definir uma lista de hash no bash (versão 4.3.30):

  • 4 gateways
  • cada gateway tem
    • um IP
    • um IP6
    • um nome
    • ...

e eu quero percorrer esta lista em um loop e fazer coisas para cada gateway.

Eu pesquisei muito, mas parece que o bash não suporta matrizes multidimensionais?

    
por rubo77 23.07.2015 / 11:24

1 resposta

8

bash ainda não possui arrays multidimensionais. Apenas ksh93 faz.

Aqui, você pode usar uma estrutura do tipo csv e nem precisa usar matrizes:

#! /bin/sh -
gws="\
foo,1.1.1.12,1::1
blah,2.2.2.2,2::2"

while IFS=, read name ip4 ip6; do
  echo something with "$name" "$ip4"...
done << E
$gws
E

(você nem precisa de bash)

com ksh93 :

gws=(
  (name=foo  ip4=1.1.1.1 ip6=1::1)
  (name=blah ip4=2.2.2.2 ip6=1::2)
)

printf '%s\n' "${gws[0].name}"
    
por 23.07.2015 / 11:35

Tags