निम्नलिखित एक फाइल को लाइन द्वारा तर्क लाइन के रूप में पढ़ता है:
while IFS= read -r line; do
echo "Text read from file: $line"
done < my_filename.txt
यह एक लूप में एक फ़ाइल से लाइनों को पढ़ने के लिए मानक रूप है । स्पष्टीकरण:
IFS=(या IFS='') व्हाट्सएप को लीड / ट्रेल करने से रोकता है।
-r बैकस्लैश की व्याख्या करने से बचता है।
या आप इसे bash फ़ाइल सहायक स्क्रिप्ट, उदाहरण सामग्री में रख सकते हैं:
#!/bin/bash
while IFS= read -r line; do
echo "Text read from file: $line"
done < "$1"
यदि उपर्युक्त फ़ाइल नाम के साथ स्क्रिप्ट में सहेजा जाता है readfile, तो इसे निम्नानुसार चलाया जा सकता है:
chmod +x readfile
./readfile filename.txt
यदि फ़ाइल मानक POSIX पाठ फ़ाइल नहीं है (= एक newline वर्ण द्वारा समाप्त नहीं किया गया है), तो लूप को आंशिक लाइनों को पीछे हटाने के लिए संशोधित किया जा सकता है:
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इसके बजाय उपयोग करें ।)