Я просто хочу перенести всі файли в певному каталозі в масив bash (якщо припустити, що жоден з файлів не має нової лінії у назві):
Тому:
myarr=()
find . -maxdepth 1 -name "mysqldump*" | mapfile -t myarr; echo "${myarr[@]}"
Порожній результат!
Якщо я використовую круговий спосіб використання файлу, тимчасового чи іншого способу:
myarr=()
find . -maxdepth 1 -name "mysqldump*" > X
mapfile -t myarray < X
echo "${myarray[@]}"
Результат!
Але чому не mapfileчитає належним чином з труби?
findі mapfileвзагалі тут , а не просто myarr=(mysqldump*)? Це навіть буде працювати з іменами з пробілами та новими рядками.
nullglobопцію ( shopt -s nullglob), myarr=(mysqldump*)щоб не закінчити масив ('mysqldump*')у випадку, якщо жоден файл не збігається.