LINUX.ORG.RU

История изменений

Исправление 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, а потом вернуть его значение.