Как уже упоминалось, я считаю, что самый эффективный метод - записать ключ / vals в файл, а затем использовать grep / awk для их получения. Это звучит как все виды ненужного ввода-вывода, но дисковый кеш срабатывает и делает его чрезвычайно эффективным - гораздо быстрее, чем пытаться сохранить их в памяти одним из перечисленных выше способов (как показывают тесты).
Вот быстрый, чистый метод, который мне нравится:
hinit() {
rm -f /tmp/hashmap.$1
}
hput() {
echo "$2 $3" >> /tmp/hashmap.$1
}
hget() {
grep "^$2 " /tmp/hashmap.$1 | awk '{ print $2 };'
}
hinit capitols
hput capitols France Paris
hput capitols Netherlands Amsterdam
hput capitols Spain Madrid
echo `hget capitols France` and `hget capitols Netherlands` and `hget capitols Spain`
Если вы хотите использовать одно значение для каждого ключа, вы также можете выполнить небольшое действие grep / sed в hput ().