Разделителем полей по умолчанию для вывода является пробел. Но разделителем записей является новая строка. ALL_TTY_OWNERS_STR
содержит набор символов root
, разделенных символами новой строки:
$ printf "%q\n" "$ALL_TTY_OWNERS_STR"
$'root\nroot\nroot\n....
И read
по умолчанию читаются до первой новой строки.
Если вам просто нужны все пользователи из ALL_TTY_OWNERS_ARRAY
, может быть проще сделать что-то вроде:
ALL_TTY_OWNERS_ARRAY=( $(stat -c '%U' /dev/*tty*) )
См. пример здесьhttps://wiki.archlinux.org/index.php/X_keyboard_extension#Caps_hjkl_as_vimlike_arrow_keys
Он должен работать во всех приложениях.
Я постараюсь уточнить этот ответ и представить более полный пример позже.