LINUX.ORG.RU

История изменений

Исправление papin-aziat, (текущая версия) :

https://unix.stackexchange.com/questions/627474/how-to-use-associative-arrays

Спасибо за ссылку, оставлю и погоняю примеры на своём bash-4.4, так как это системный шелл, то надо знать о проблемах.

Таким образом получается, что башистам надо уметь писать переносимый код между версиями баша, — жесть! Стартовый пост подправил.

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

$ cat test
aaa

bbb
$ mapfile -t list < test
$ declare -A hash
$ for i in "${list[@]}"; do hash[$i]=1; done
bash: hash[$i]: bad array subscript
$ declare -p hash
declare -A hash=([aaa]="1" )

😱

Кстати, я узнал об ассоциативных массивах из книги «Идиомы bash» (Карл Олбинг, Джей Пи Фоссен) и там на странице 106 под номером 7 дана такая идиома в коде подсчёта слов:

(( myhash[$line]++ ))

🙂

В книге о баше-5 говорят как о будущем.

Исправление papin-aziat, :

https://unix.stackexchange.com/questions/627474/how-to-use-associative-arrays

Спасибо за ссылку, оставлю и погоняю примеры на своём bash-4.4, так как это системный шелл, то надо знать о проблемах.

Таким образом получается, что башистам надо уметь писать переносимый код между версиями баша, — жесть! Стартовый пост подправил.

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

$ cat test
aaa

bbb
$ mapfile -t list < test
$ declare -A hash
$ for i in "${list[@]}"; do hash[$i]=1; done
bash: hash[$i]: bad array subscript
$ declare -p hash
declare -A hash=([aaa]="1" )

😱

Кстати, я узнал об ассоциативных массивах из книги «Идиомы bash» (Карл Олбинг, Джей Пи Фоссен) и там на странице 106 под номером 7 дана такая идиома в коде подсчёта слов:

(( myhash[$line]++ ))

🙂

Исходная версия papin-aziat, :

https://unix.stackexchange.com/questions/627474/how-to-use-associative-arrays

Спасибо за ссылку, оставлю и погоняю примеры на своём bash-4.4, так как это системный шелл, то надо знать о проблемах.

Таким образом получается, что башистам надо уметь писать переносимый код между версиями баша, умора! Стартовый пост подправил.

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

$ cat test
aaa

bbb
$ mapfile -t list < test
$ declare -A hash
$ for i in "${list[@]}"; do hash[$i]=1; done
bash: hash[$i]: bad array subscript
$ declare -p hash
declare -A hash=([aaa]="1" )

😱

Кстати, я узнал об ассоциативных массивах из книги «Идиомы bash» (Карл Олбинг, Джей Пи Фоссен) и там на странице 106 под номером 7 дана такая идиома в коде подсчёта слов:

(( myhash[$line]++ ))

🙂