मैं बस एक निश्चित निर्देशिका में सभी फाइलों को बैश सरणी में लाना चाहता हूं (यह मानते हुए कि फाइलों में से कोई भी नाम में एक नई पंक्ति नहीं है):
इसलिए:
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*)
? यह भी रिक्त स्थान और newlines के साथ फ़ाइल नाम के साथ काम करेंगे।
nullglob
( shopt -s nullglob
) को चालू करना है । myarr=(mysqldump*)
('mysqldump*')