Карта Bash не дает должного результата

Я использую карту в bash следующим образом:

declare -a hash
hash=(["a"] = "A" ["b"] = "B" ["c"] = "C" ["d"] = "D")

echo ${hash["a"]}

https://ideone.com/YfnazQ

Однако он печатает D вместо A. В чем проблема в этом фрагменте?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
94
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

У вас ошибка или опечатка, вы указали ключ -a вместо -A

Итак, вместо этого:

declare -a hash

использовать:

declare -A hash
Ответ принят как подходящий

Ваша проблема заключается в том, как вы определили переменную hash.

declare -a hash для индексированных массивов, я имею в виду массивы, где индекс — это просто числа.

Чтобы объявить ассоциативный массив, просто замените -a на -A:

declare -A hash

Таким образом, вы можете писать буквы в качестве индекса, и это эхо будет работать как положено.

Надеюсь, я помог!

-bash: объявить: -A: неверный параметр объявить: использование: объявить [-afFirtx] [-p] [имя[=значение] ...]

Shashwat Kumar 12.07.2019 11:36

@ShashwatKumar Какую версию bash вы используете? У меня работает в 4.2.46, только что попробовал.

Miki4444 12.07.2019 11:41

Было 3,2. После обновления поменял на 5.0.7

Shashwat Kumar 12.07.2019 11:47

Все еще смотрит. новый путь bash — /usr/local/bin/bash, но /bin/bash по-прежнему указывает на версию 3.2. Я хочу, чтобы /bin/bash был 5.0.7

Shashwat Kumar 12.07.2019 11:53

@ShashwatKumar Может быть, это поможет вам в этом. Не забудьте выйти и войти снова после изменения

Miki4444 12.07.2019 11:55

Привет @ShashwatKumar, тебе удалось это сделать? Можем ли мы помочь вам еще с этим?

Miki4444 17.07.2019 11:26

Другие вопросы по теме