अन्य समाधान कर रहे हैं, लेकिन एक साधारण एक है जो मैं आमतौर पर उपयोग करने में wc
के उत्पादन में डाल करने के लिए है एक अस्थायी फ़ाइल, और फिर वहां से पढ़ें:
wc file.txt > xxx
read lines words characters filename < xxx
echo "lines=$lines words=$words characters=$characters filename=$filename"
lines=2 words=5 characters=23 filename=file.txt
का लाभ यह विधि यह है कि आपको प्रत्येक चर के लिए कई awk
प्रक्रियाएं बनाने की आवश्यकता नहीं है। नुकसान यह है कि आपको एक अस्थायी फ़ाइल की आवश्यकता है, जिसे आपको बाद में हटा देना चाहिए।
सावधान रहें: यह काम नहीं करता है:
wc file.txt | read lines words characters filename
समस्या किसी अन्य प्रक्रिया बनाता है, और चर वहाँ अपडेट किया जाता है read
है कि पाइपिंग है, तो वे फोन करने खोल में सुलभ नहीं हैं।
संपादित करें: arnaud576875 द्वारा समाधान जोड़ने:
एक फ़ाइल के लिए लिख बिना
read lines words chars filename <<< $(wc x)
काम करता है (और पाइप समस्या नहीं है)। यह विशिष्ट विशिष्ट है।
बैश मैनुअल से:
Here Strings
A variant of here documents, the format is:
<<<word
The word is expanded and supplied to the command on its standard input.
कुंजी "शब्द का विस्तार होता है" बिट है।
set -- `wc file.txt`
chars=$1
words=$2
lines=$3
यह स्पष्ट रूप से $*
और संबंधित चर clobbers -
मेरा से बेहतर लेकिन आपको फ़ाइल 'xxx' या फ़ाइल नाम की आवश्यकता नहीं है:' wc
@ एड्रियन: ऊपर मेरी टिप्पणी देखें: पाइपिंग किसी अन्य प्रक्रिया में चर बनाता है, इसलिए वे कॉलिंग खोल में उपलब्ध नहीं हैं। – dangonfast
'लाइनों को पढ़ना शब्द शब्द <<< $ (wc x) 'फ़ाइल में लिखने के बिना काम करता है (और पाइप समस्या नहीं है) – arnaud576875