Ассоциативный массив в bash
похож на хэши / словари в типичных языках, и, как и они, он неупорядочен (фактически упорядочен в соответствии с внутренним значением хеш-функции). Таким образом, вы не можете ожидать, что вывод будет (обычно) отсортирован при итерации по (ассоциативным) ключам массива.
Вам нужно отсортировать его самостоятельно, например, отправив STDOUT в STDIN sort
:
for key in ${!current_file[@]}; do
echo $key
done | sort
или что-то подобное.
Если вы хотите сохранить порядок, чтобы вы могли выполнять любую операцию, основанную на порядке над ключами / значениями ассоциативного массива, вы можете сохранить другой индексированный массив в качестве ссылки для вставки. Следующее должно дать вам основную идею:
## Associative array `foo`
$ declare -A foo=([spam]=egg [baz]=cool)
## Reference indexed array `bar` containing the keys of `foo` sequentially indexed
$ bar=(spam baz)
## Retrieving in forward order
$ for i in "${bar[@]}"; do echo "$i :: ${foo[$i]}"; done
spam :: egg
baz :: cool
## Retrieving in reverse order
$ for ((i=${#bar[@]}-1; i>=0; i--)); do idx="${bar[$i]}"; echo "$idx :: ${foo[$idx]}"; done
baz :: cool
spam :: egg
Удаление светового -шкафчика и использование lightdm решило проблему для меня в Debian 10.
$ sudo apt install lightdm
$ sudo apt remove light-locker
На Thinkpad T410.
Если перезапуск LightDM после переключения+лог -в текстовой консоли помогает, то вы можете попробовать это решение, первоначально найденное здесь:В консоли VT1 вы можете написать этот 1 -строчный скрипт:
while true; do DISPLAY=:0 xrandr --auto && break || sleep 1s; done
Начнется цикл. Затем вы переключаетесь на GUI-консоль (Ctl -Alt -F7 ), и через 1 секунду она должна стать активной с запросом на вход. Если это сработает, мы сможем создать полностью автоматическое решение.