История изменений
Исправление 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]++ ))
🙂