Я использую карту в bash следующим образом:
declare -a hash
hash=(["a"] = "A" ["b"] = "B" ["c"] = "C" ["d"] = "D")
echo ${hash["a"]}
Однако он печатает D вместо A. В чем проблема в этом фрагменте?





У вас ошибка или опечатка, вы указали ключ -a вместо -A
Итак, вместо этого:
declare -a hash
использовать:
declare -A hash
Ваша проблема заключается в том, как вы определили переменную hash.
declare -a hash для индексированных массивов, я имею в виду массивы, где индекс — это просто числа.
Чтобы объявить ассоциативный массив, просто замените -a на -A:
declare -A hash
Таким образом, вы можете писать буквы в качестве индекса, и это эхо будет работать как положено.
Надеюсь, я помог!
@ShashwatKumar Какую версию bash вы используете? У меня работает в 4.2.46, только что попробовал.
Было 3,2. После обновления поменял на 5.0.7
Все еще смотрит. новый путь bash — /usr/local/bin/bash, но /bin/bash по-прежнему указывает на версию 3.2. Я хочу, чтобы /bin/bash был 5.0.7
@ShashwatKumar Может быть, это поможет вам в этом. Не забудьте выйти и войти снова после изменения
Привет @ShashwatKumar, тебе удалось это сделать? Можем ли мы помочь вам еще с этим?
-bash: объявить: -A: неверный параметр объявить: использование: объявить [-afFirtx] [-p] [имя[=значение] ...]