История изменений
Исправление DRVTiny, (текущая версия) :
1) Почитайте о declare -p.
Вы можете сформировать массив в функции, вывести его декларацию как результат выполнения функции и применить эту декларацию обычным source <(выхлоп_функции) или eval «$(функция)».
2) Второй вариант - использовать глобальные переменные (самый очевидный, но безусловно весьма неопрятный/нечистоплотный во всех отношениях)
3) Всякие readarray тоже вполне адекватны задаче, но способ с declare -p гораздо менее чреват багами, поскольку declare -p гарантированно создаёт описание массива, применимое для клонирования оного
На баше так функции не используют
Используют. Если есть гарантия того, что вывод функции содержит IFS только как разделитель элементов массива, а внутри элементов IFS'а нет, то можно и так - вполне адекватный метод. Ну и да, ничто не мешает временно поменять IFS, а потом вернуть его значение.
Исходная версия DRVTiny, :
1) Почитайте о declare -p.
Вы можете сформировать массив в функции, вывести его декларацию как результат выполнения функции и применить эту декларацию обычным source <(выхлоп_функции) или eval «$(функция)».
2) Второй вариант - использовать глобальные переменные (самый очевидный, но безусловно весьма неопрятный/нечистоплотный во всех отношениях)
3) Всякие readarray тоже вполне адекватны задаче, но способ с declare -p гораздо менее чреват багами, поскольку будет declare -p гарантированно создаёт описание массива, применимое для клонирования оного
На баше так функции не используют
Используют. Если есть гарантия того, что вывод функции содержит IFS только как разделитель элементов массива, а внутри элементов IFS'а нет, то можно и так - вполне адекватный метод. Ну и да, ничто не мешает временно поменять IFS, а потом вернуть его значение.