На основе ассоциативного массива в сценарии Bash я должен выполнить итерации по нему для получения ключа и значения.
#!/bin/bash
declare -A array
array[foo]=bar
array[bar]=foo
Я на самом деле не понимаю, как получить ключ при использовании для - в цикле.
Доступ к ключам осуществляется с помощью восклицательного знака: $ {! Array [@]}
, доступ к значениям осуществляется с помощью $ {array [@]}
.
Вы можете перебирать пары ключ / значение следующим образом:
for i in "${!array[@]}"
do
echo "key : $i"
echo "value: ${array[$i]}"
done
Обратите внимание на использование кавычек вокруг переменной в операторе for
(плюс использование @
вместо *
). Это необходимо, если какие-либо ключи содержат пробелы.
Путаница в другом ответе возникает из-за того, что ваш вопрос включает «foo» и «bar» для ключей и значений.
Вы можете получить доступ к ключам с помощью $ {! Array [@]}
:
bash-4.0$ echo "${!array[@]}"
foo bar
Затем легко перебирать пары ключ / значение:
for i in "${!array[@]}"
do
echo "key :" $i
echo "value:" ${array[$i]}
done