Вместо этого вы можете просто readarray
/ mapfile
, которые специально созданы для чтения многострочного вывода в массив.
mapfile -t possibleEncodings < <(iconv -l)
Здесь строки бесполезны, когда вы можете просто запуститькоманда в модели замещения процесса.<()
выводит вывод команды так, как будто он появляется в файле для mapfile
для чтения.
Что касается , почему ваша первоначальная попытка не сработала, вы просто делаетеread
вызывается один раз, но есть строки для чтения в последующих строках.Вам нужно либо читать до EOF в цикле, либо использовать mapfile
, как указано выше, который сделает эту работу за вас.
В качестве примечания всегда используйте строчные буквы для пользовательских переменных / массивов и имен функций.Это позволяет вам отличать ваши переменные от собственных переменных среды оболочки, которые в верхнем регистре.