Mapfile একটি সূচীবদ্ধ অ্যারে, যেমন নয় পোর্টেবল মধ্যে একটি ফাইল থেকে লাইন পড়া করার জন্য একটি সুবিধাজনক উপায় পড়া কিন্তু সামান্য দ্রুত। লুপের জন্য ব্যবহার করে আপনি একটি সাব-শেল তৈরি করা এড়াতে পারেন।
#!/bin/bash
mapfile -t < file.txt
for line in "${MAPFILE[@]}"; do
echo $line
done
পাইপলাইনগুলি ব্যবহার করার সময় মনে রাখবেন, এটি যখন একটি লুপটি সাব-শেলের মধ্যে রাখবে। ভেরিয়েবলের মতো লুপের ভিতরে পরিবর্তনগুলি স্ক্রিপ্টের বাইরের অংশে প্রচার করবে না।
উদাহরণ:
#!/bin/bash
a=0
printf %s\\n {0..5} | while read; do
((a++))
done
echo $a # 'a' will always be 0.
(আরও ভাল সমাধান):
#!/bin/bash
b=0
while read; do
((b++))
done < <(printf %s\\n {0..5})
echo $b # 'b' equal to 6 (works as expected).