खोज…


पैरामीटर

पैरामीटर विवरण
भारतीय विदेश सेवा आंतरिक क्षेत्र विभाजक
फ़ाइल एक फ़ाइल नाम / पथ
-r रीड के साथ उपयोग किए जाने पर व्याख्या को रोकता है
-t readarray द्वारा पढ़ी गई प्रत्येक पंक्ति से एक अनुगामी न्यूलाइन निकालता है
-d DELIM तब तक जारी रखें, जब तक कि DELIM का पहला चरित्र ( read साथ), न कि नईलाइन के बजाय

फ़ाइल (/ etc / passwd) लाइन को लाइन और फ़ील्ड द्वारा फ़ील्ड में पढ़ता है

#!/bin/bash
FILENAME="/etc/passwd"
while IFS=: read -r username password userid groupid comment homedir cmdshell
do
  echo "$username, $userid, $comment $homedir"
done < $FILENAME

यूनिक्स पासवर्ड फ़ाइल में, उपयोगकर्ता जानकारी लाइन द्वारा लाइन में संग्रहीत की जाती है, प्रत्येक लाइन में कॉलोन (:) वर्ण द्वारा अलग किए गए उपयोगकर्ता के लिए जानकारी होती है। इस उदाहरण में, लाइन द्वारा फाइल लाइन को पढ़ते समय, लाइन को भी कॉलोन वर्ण का उपयोग करके क्षेत्रों में विभाजित किया जाता है जो कि सीमांकक के रूप में होता है जो IFS के लिए दिए गए मान से इंगित होता है।

नमूना इनपुट

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
pulse:x:497:495:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tomcat:x:91:91:Apache Tomcat:/usr/share/tomcat6:/sbin/nologin
webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin

नमूना आउटपुट

mysql, 27, MySQL Server /var/lib/mysql
pulse, 497, PulseAudio System Daemon /var/run/pulse
sshd, 74, Privilege-separated SSH /var/empty/sshd
tomcat, 91, Apache Tomcat /usr/share/tomcat6
webalizer, 67, Webalizer /var/www/usage

लाइन को लाइन से पढ़ने के लिए और पूरी लाइन को वेरिएबल में असाइन किया गया है, निम्नलिखित उदाहरण का एक संशोधित संस्करण है। ध्यान दें कि हमारे पास यहाँ उल्लेखित नाम रेखा से केवल एक चर है।

#!/bin/bash
FILENAME="/etc/passwd"
while IFS= read -r line
do
  echo "$line"
done < $FILENAME

नमूना इनपुट

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
pulse:x:497:495:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tomcat:x:91:91:Apache Tomcat:/usr/share/tomcat6:/sbin/nologin
webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin

नमूना आउटपुट

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
pulse:x:497:495:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tomcat:x:91:91:Apache Tomcat:/usr/share/tomcat6:/sbin/nologin
webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin

किसी सरणी में फ़ाइल की पंक्तियाँ पढ़ें

readarray -t arr <file

या एक लूप के साथ:

arr=()
while IFS= read -r line; do
   arr+=("$line")
done <file

फ़ाइल लाइन के माध्यम से लूपिंग लाइन द्वारा

while IFS= read -r line; do
   echo "$line"
done <file

यदि फ़ाइल में अंत में एक नई पंक्ति शामिल नहीं हो सकती है, तो:

while IFS= read -r line || [ -n "$line" ]; do
   echo "$line"
done <file

किसी स्ट्रिंग की पंक्तियों को एक सरणी में पढ़ें

var='line 1
line 2
line3'
readarray -t arr <<< "$var"

या एक लूप के साथ:

arr=()
while IFS= read -r line; do
   arr+=("$line")
done <<< "$var"

लाइन द्वारा एक स्ट्रिंग लाइन के माध्यम से लूपिंग

var='line 1
line 2
line3'
while IFS= read -r line; do
   echo "-$line-"
done <<< "$var"

या

readarray -t arr <<< "$var"
for i in "${arr[@]}";do
    echo "-$i-"
done

लाइन द्वारा कमांड लाइन के आउटपुट के माध्यम से लूपिंग

while IFS= read -r line;do
    echo "**$line**"
done < <(ping google.com)

या एक पाइप के साथ:

ping google.com |
while IFS= read -r line;do
    echo "**$line**"
done

फ़ाइल फ़ील्ड फ़ील्ड द्वारा पढ़ें

मान लेते हैं कि क्षेत्र विभाजक है : (कोलन) फ़ाइल फ़ाइल में

while IFS= read -d : -r field || [ -n "$field" ]; do
   echo "$field"
done <file

एक सामग्री के लिए:

first : se
con
d:
    Thi rd:
    Fourth

आउटपुट है:

**first **
** se
con
d**
**
    Thi rd**
**
    Fourth
**

फ़ील्ड द्वारा एक स्ट्रिंग फ़ील्ड पढ़ें

मान लेते हैं कि क्षेत्र विभाजक है :

var='line: 1
line: 2
line3'
while IFS= read -d : -r field || [ -n "$field" ]; do
   echo "-$field-"
done <<< "$var"

आउटपुट:

-line-
- 1
line-
- 2
line3
-

किसी फ़ाइल के फ़ील्ड को एक सरणी में पढ़ें

मान लेते हैं कि क्षेत्र विभाजक है :

arr=()
while IFS= read -d : -r field || [ -n "$field" ]; do
   arr+=("$field")
done <file

किसी स्ट्रिंग के फ़ील्ड को एक सरणी में पढ़ें

मान लेते हैं कि क्षेत्र विभाजक है :

var='1:2:3:4:
newline'
arr=()
while IFS= read -d : -r field || [ -n "$field" ]; do
   arr+=("$field")
done <<< "$var"
echo "${arr[4]}"

आउटपुट:

newline

फ़ील्ड द्वारा कमांड फ़ील्ड के आउटपुट के माध्यम से लूपिंग

मान लेते हैं कि क्षेत्र विभाजक है :

while IFS= read -d : -r field || [ -n "$field" ];do
    echo "**$field**"
done < <(ping google.com)

या एक पाइप के साथ:

ping google.com | while IFS= read -d : -r field || [ -n "$field" ];do
    echo "**$field**"
done


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow