Saya hanya ingin memasukkan semua file dalam direktori tertentu ke bash array (dengan asumsi tidak ada file yang memiliki baris baru dalam namanya):
Begitu:
myarr=()
find . -maxdepth 1 -name "mysqldump*" | mapfile -t myarr; echo "${myarr[@]}"
Hasil kosong!
Jika saya melakukan cara bundaran menggunakan file, sementara atau sebaliknya:
myarr=()
find . -maxdepth 1 -name "mysqldump*" > X
mapfile -t myarray < X
echo "${myarray[@]}"
Hasil!
Tetapi mengapa tidak mapfile
membaca dengan benar dari sebuah pipa?
find
dan mapfile
di sini sama sekali dan bukan hanya sekadar myarr=(mysqldump*)
? Ini bahkan akan bekerja dengan nama file dengan spasi dan baris baru.
nullglob
opsi ( shopt -s nullglob
) untuk myarr=(mysqldump*)
agar tidak berakhir dengan array ('mysqldump*')
jika tidak ada file yang cocok.