Sadece belirli bir dizindeki tüm dosyaları bir bash dizisine almak istiyorum (dosyaların hiçbirinin adında bir satırsonu olduğu varsayılarak):
Yani:
myarr=()
find . -maxdepth 1 -name "mysqldump*" | mapfile -t myarr; echo "${myarr[@]}"
Boş sonuç!
Geçici veya başka bir şekilde bir dosyayı kullanma dolambaçlı yolunu yaparsanız:
myarr=()
find . -maxdepth 1 -name "mysqldump*" > X
mapfile -t myarray < X
echo "${myarray[@]}"
Sonuç!
Ama neden mapfilebir borudan düzgün okumuyor?
findve mapfileburada hiç ve sadece basitçe myarr=(mysqldump*)? Bu, boşluklu ve yeni satırlı dosya adlarıyla bile çalışacaktır.
nullglobseçeneği ( shopt -s nullglob) açmak zorunda olduğunu fark ettim . myarr=(mysqldump*)('mysqldump*')