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 mapfilemembaca dengan benar dari sebuah pipa?
finddan mapfiledi sini sama sekali dan bukan hanya sekadar myarr=(mysqldump*)? Ini bahkan akan bekerja dengan nama file dengan spasi dan baris baru.
nullglobopsi ( shopt -s nullglob) untuk myarr=(mysqldump*)agar tidak berakhir dengan array ('mysqldump*')jika tidak ada file yang cocok.