एक स्क्रिप्ट का हिस्सा जो मैं लिख रहा हूं, उसी स्ट्रिंग के लिए विभिन्न टेक्स्ट फ़ाइलों की जांच करने की आवश्यकता है। इससे पहले कि मुझे सिर्फ एक फ़ाइल जांचनी पड़े, इसलिए मेरे पास केटोगीज़ के भीतर स्ट्रिंग्स की एक लंबी सूची थी, जिसे वेरिएबल्स के रूप में परिभाषित किया गया था। बाद में लिपि में variabled कहा जाता है और स्क्रीन पर उत्पादन कर रहे हैं कि क्या कोई मुकाबला नहीं है:क्या 'if' कथन में एकाधिक कमांड पाइप करना संभव है?
category_1=$(sudo zcat myfile | egrep -c 'Event 1|Event 2|Event 3')
category_2=$(sudo zcat myfile | egrep -c 'Event 4|Event 5|Event 6')
category_3=$(sudo zcat myfile | egrep -c 'Event 7|Event 8|Event 9')
...
echo Category 1
if [[ $category_1 -ge 2 ]];then
echo There were $category_1 events
elif [[ $category_1 -eq 1 ]]; then
echo There was $category_1 event
fi
आदि, आदि ...
अब मैं इतना है कि मैं grepped जांच कर सकते हैं उसे बदलना चाहते हैं एकाधिक पाठ फ़ाइलों के खिलाफ तार। मैं कोई लाभ नहीं हुआ ग्रेप चर के साथ बयान करता है, तो में चर और उन्हें पाइप के रूप में नई फ़ाइलें परिभाषित करने के लिए कोशिश की है:
category_1=$(egrep -c 'Event 1|Event 2|Event 3')
category_2=$(egrep -c 'Event 4|Event 5|Event 6')
category_3=$(egrep -c 'Event 7|Event 8|Event 9')
myfile=$(sudo zcat myfile)
myfile2=$(sudo zcat myfile2)
myfile3=$(sudo zcat myfile3)
...
echo Category 1 - Myfile
if [[ myfile | $category_1 -ge 2 ]];then
echo There were $category_1 events in myfile
elif [[ myfile | $category_1 -eq 1 ]]; then
echo There was $category_1 event in myfile
fi
ऐसा लगता है कि मैं यह कर सकते हैं एक अगर बयान में नहीं पाइप आदेशों।
क्या यह संभव है 'egrep' कमांड को एक चर के रूप में सेट करने के लिए ताकि मुझे प्रत्येक कमांड में 'इवेंट 1' आदि डालना पड़े? तो यह grepvariable1 = $ egrep -c 'इवेंट 1 | इवेंट 2 | इवेंट 3'आईफ़ [[$ (सुडो जेकैट myfile1 | grepvariable1) -ge 2]] की तरह होगा; तो – Hxwk
@Hxwk: आप उस फ़ंक्शन को परिभाषित कर सकते हैं जिसमें वह कोड शामिल है जिसे आप दोहराना चाहते हैं। – choroba
मुझे सही दिशा में इंगित करने के लिए धन्यवाद, मैं – Hxwk