আমি কেবলমাত্র একটি নির্দিষ্ট ডিরেক্টরিতে থাকা সমস্ত ফাইলকে ব্যাশ অ্যারেতে নিয়ে যেতে চাই (ধরে নিই যে ফাইলগুলির কোনওটির নামে নতুন লাইন নেই):
তাই:
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*')
।