Народ, чего-то я или не понимаю, или туплю. Вот такой пример на bash'е: #!/bin/bash # Создаём обычный индексированный массив one=("a" "b" "c" "d") # Объявляем ассоциативный массив declare -A two # В новом массиве в качестве ключей и значений # используем значения из исходного массива for i in "${one[@]}" do two["$i"]="$i" done # Выводим список ключей echo "${!two[@]}" # Выводим содержимое нового массива echo "${two[@]}" Выхлоп: d c b a d c b a Эффект для меня неожиданный: в новом массиве элементы оказываются расположены в обратном порядке, то есть при добавлении нового элемента в ассоциативный массив он кладётся не в конец, после предыдущего, а в начало — перед ним! Или я что-то делаю не так, или у меня глаза на жопе, или это нигде внятно не описано, потому что ассоциативные массивы во всяких пособиях обычно упоминают скороговоркой, в man bash про порядок ключей ассоциативного массива тоже кажется ни слова. И чё с этим делать и как с этим бороться с наименьшими затратами? А именно, когда хочется получить список именно в ожидаемом порядке по возрастанию, а не наоборот.