在 bash 4 中循环遍历多维数组

rub*_*o77 3 bash array

我想在 bash 中定义一个哈希列表(版本 4.3.30):

  • 4个网关
  • 每个网关都有
    • 一个IP
    • IP6
    • 一个名字
    • ...

我想循环遍历这个列表并对每个网关做一些事情。

我搜索了很多,但似乎bash不支持多维数组?

Sté*_*las 8

bash还没有多维数组。只会ksh93

在这里,您可以使用类似 csv 的结构,甚至不需要使用数组:

#! /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
Run Code Online (Sandbox Code Playgroud)

(你甚至不需要 bash)

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}"
Run Code Online (Sandbox Code Playgroud)