নিম্নলিখিতটি লাইনের দ্বারা আর্গুমেন্ট লাইন হিসাবে পাস করা একটি ফাইল পড়বে:
while IFS= read -r line; do
echo "Text read from file: $line"
done < my_filename.txt
লুপের কোনও ফাইল থেকে লাইন পড়ার জন্য এটি স্ট্যান্ডার্ড ফর্ম । ব্যাখ্যা:
IFS=
(বা IFS=''
) হোয়াইটস্পেসকে অগ্রণী / পেছন ছাঁটাই করা থেকে বাধা দেয়।
-r
ব্যাকস্ল্যাশ ব্যাখ্যা থেকে বাঁচতে বাধা দেয়।
বা আপনি এটি একটি বাশ ফাইল সহায়ক স্ক্রিপ্টে রাখতে পারেন, উদাহরণস্বরূপ সামগ্রী:
#!/bin/bash
while IFS= read -r line; do
echo "Text read from file: $line"
done < "$1"
যদি উপরেরটি ফাইলের নাম সহ কোনও স্ক্রিপ্টে সংরক্ষণ করা হয় তবে readfile
এটি নিম্নরূপে চালানো যেতে পারে:
chmod +x readfile
./readfile filename.txt
যদি ফাইলটি কোনও স্ট্যান্ডার্ড পসিক্স টেক্সট ফাইল না হয় (= একটি নতুন লাইনের চরিত্র দ্বারা শেষ করা হয় না), আংশিক লাইনগুলি অনুসরণ করার জন্য লুপটি পরিবর্তন করা যেতে পারে:
while IFS= read -r line || [[ -n "$line" ]]; do
echo "Text read from file: $line"
done < "$1"
এখানে, || [[ -n $line ]]
শেষ লাইনটি যদি এটির সাথে শেষ না হয় তবে তা উপেক্ষা করা থেকে বাধা দেয় \n
(যেহেতু read
ইওএফ-এর মুখোমুখি হওয়ার সময় একটি শূন্য-বহির্গমন কোড দেয়)।
লুপের ভিতরে থাকা কমান্ডগুলি যদি স্ট্যান্ডার্ড ইনপুট থেকেও পড়ে, তবে ফাইল বর্ণনাকারী দ্বারা ব্যবহৃত read
অন্য কোনও কিছুর ( স্ট্যান্ডার্ড ফাইল বর্ণনাকারী এড়ানোর জন্য ) পরিবর্তন করা যেতে পারে , যেমন:
while IFS= read -r -u3 line; do
echo "Text read from file: $line"
done 3< "$1"
(নন-বাশ শেলগুলি না জেনে থাকতে পারে read -u3
; read <&3
পরিবর্তে ব্যবহার করুন))