如何迭代bash中的关联数组


基于Bash脚本中的关联数组,我需要遍历它来获取键和值。

#!/bin/bash

declare -A array
array[foo]=bar
array[bar]=foo

实际上,我不明白如何在使用for-in循环时获得密钥。

使用感叹号访问键:$ {!array [@]}values 可以使用` $ {阵列[@]}

你可以像这样遍历键/值对:

for i in "${!array[@]}"
do
  echo "key  : $i"
  echo "value: ${array[$i]}"
done

注意在语句的中使用引号(加上使用 @ 而不是 * `)。如果任何键包含空格,这是必要的。

在另一个答案中的混淆来自于这样一个事实,即你的问题包括“foo”和“bar”两个键 的值。

您可以使用$ {!array [@]}

访问密钥

bash-4.0$ echo "${!array[@]}"
foo bar

然后,遍历键/值对是很容易的:

for i in "${!array[@]}"
do
  echo "key :" $i
  echo "value:" ${array[$i]}
done

未经作者同意,本文严禁转载,违者必究!