Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

5 बैश केस स्टेटमेंट उदाहरण

5 बैश केस स्टेटमेंट उदाहरणबैश शेल केस स्टेटमेंट C में स्विच स्टेटमेंट के समान है। इसका उपयोग पूर्णांक और जैसे सरल मानों का परीक्षण करने के लिए किया जा सकता है। वर्ण।

केस स्टेटमेंट लूप नहीं है, यह कोड के ब्लॉक को n कई बार निष्पादित नहीं करता है। इसके बजाय, बैश शेल स्थिति की जांच करता है, और प्रोग्राम के प्रवाह को नियंत्रित करता है।

इस लेख में हम 5 व्यावहारिक उदाहरणों के साथ बैश केस कमांड की समीक्षा करते हैं।

बैश शेल में केस कंस्ट्रक्शन हमें उन पैटर्न के खिलाफ स्ट्रिंग्स का परीक्षण करने की अनुमति देता है जिनमें वाइल्ड कार्ड कैरेक्टर हो सकते हैं। बैश केस स्टेटमेंट बैश का सबसे सरल रूप है अगर-तो-और स्टेटमेंट।

बैश केस स्टेटमेंट का सिंटैक्स।

case expression in
 pattern1 )
 statements ;;
 pattern2 )
 statements ;;
 ...
esac

बैश केस स्टेटमेंट के मुख्य बिंदु निम्नलिखित हैं:

  • केस स्टेटमेंट पहले एक्सप्रेशन का विस्तार करता है और हर पैटर्न से उसका मिलान करने की कोशिश करता है।
  • जब एक मैच मिलता है तब तक सभी संबंधित स्टेटमेंट मिलते हैं जब तक कि डबल सेमीकोलन (;;) निष्पादित नहीं हो जाता।
  • पहले मैच के बाद, मामला अंतिम कमांड के बाहर निकलने की स्थिति के साथ समाप्त हो जाता है जिसे निष्पादित किया गया था।
  • यदि कोई मिलान नहीं है, तो मामले की निकास स्थिति शून्य है।

बैश केस उदाहरण 1. किसी प्रक्रिया को सिग्नल भेजना

निम्न स्क्रिप्ट सिग्नल नंबर और प्रोसेस आईडी को इसके तर्क के रूप में स्वीकार करती है, और सिग्नल नाम का उपयोग करके किसी दिए गए प्रोसेस आईडी को सिग्नल भेजती है।

<केंद्र>

यह स्क्रिप्ट केस स्टेटमेंट के उपयोग को प्रदर्शित करने के लिए है।

$ cat signal.sh
#!/bin/bash

if [ $# -lt 2 ]
then
 echo "Usage : $0 Signalnumber PID"
 exit
fi

case "$1" in

1) echo "Sending SIGHUP signal"
 kill -SIGHUP $2
 ;;
2) echo "Sending SIGINT signal"
 kill -SIGINT $2
 ;;
3) echo "Sending SIGQUIT signal"
 kill -SIGQUIT $2
 ;;
9) echo "Sending SIGKILL signal"
 kill -SIGKILL $2
 ;;
*) echo "Signal number $1 is not processed"
 ;;
esac

उपरोक्त उदाहरण में:

  • $1 और $2 क्रमशः सिग्नल नंबर और प्रोसेस आईडी हैं।
  • किल कमांड का उपयोग करके, यह दिए गए प्रोसेस आईडी को संबंधित सिग्नल भेजता है।
  • यह कई सेकंड के लिए स्लीप कमांड निष्पादित करता है।
  • वैकल्पिक अंतिम तुलना *) एक डिफ़ॉल्ट मामला है और यह किसी भी चीज़ से मेल खाता है।

उपरोक्त शेल स्क्रिप्ट का उपयोग:स्लीप कमांड की प्रोसेस आईडी का पता लगाएं और प्रोसेस को खत्म करने के लिए उस प्रोसेस आईडी को किल सिग्नल भेजें।

$ sleep 1000

$ ps -a | grep sleep
23277 pts/2 00:00:00 sleep

$ ./signal.sh 9 23277
Sending SIGKILL signal

$ sleep 1000
Killed

इसके अलावा, हमारे पहले के किल लेख को देखें - एक प्रक्रिया को खत्म करने के 4 तरीके।

बैश केस उदाहरण। 2. एक फ़ाइल में पैटर्न मिलान

यह उदाहरण पंक्तियों की संख्या, शब्दों की संख्या को प्रिंट करता है और दिए गए पैटर्न से मेल खाने वाली पंक्तियों को हटा देता है।

$ cat fileop.sh
#!/bin/bash

# Check 3 arguments are given #
if [ $# -lt 3 ]
then
 echo "Usage : $0 option pattern filename"
 exit
fi

# Check the given file is exist #
if [ ! -f $3 ]
then
 echo "Filename given \"$3\" doesn't exist"
 exit
fi

case "$1" in

# Count number of lines matches
-i) echo "Number of lines matches with the pattern $2 :"
 grep -c -i $2 $3
 ;;
# Count number of words matches
-c) echo "Number of words matches with the pattern $2 :"
 grep -o -i $2 $3 | wc -l
 ;;
# print all the matched lines
-p) echo "Lines matches with the pattern $2 :"
 grep -i $2 $3
 ;;
# Delete all the lines matches with the pattern
-d) echo "After deleting the lines matches with the pattern $2 :"
 sed -n "/$2/!p" $3
 ;;
*) echo "Invalid option"
 ;;
esac

उपरोक्त स्क्रिप्ट का निष्पादन नीचे दिखाया गया है।

$ cat text
Vim is a text editor released by Bram Moolenaar in 1991 for the Amiga computer.
The name "Vim" is an acronym for "Vi IMproved" because Vim was created as an extended version of the vi editor, with many additional features designed to be helpful in editing program source code.
Although Vim was originally released for the Amiga, Vim has since been developed to be cross-platform, supporting many other platforms.
It is the most popular editor amongst Linux Journal readers.

बैश केस रेगेक्स आउटपुट। लाइनों को हटाने के बाद विम पैटर्न के साथ मेल खाता है:

$ ./fileop.sh -d Vim text
It is the most popular editor amongst Linux Journal readers.

इसके अलावा, बैश ~ विस्तार और { } विस्तार पर हमारे पहले के लेख को देखें।

बैश केस उदाहरण 3. एक्सटेंशन से फ़ाइल प्रकार ढूंढें

यह उदाहरण फ़ाइल नाम के विस्तार के आधार पर फ़ाइल के प्रकार (पाठ, Csource, आदि) को प्रिंट करता है।

$ cat filetype.sh
#!/bin/bash
for filename in $(ls)
do
 # Take extension available in a filename
 ext=${filename##*\.}
 case "$ext" in
 c) echo "$filename : C source file"
 ;;
 o) echo "$filename : Object file"
 ;;
 sh) echo "$filename : Shell script"
 ;;
 txt) echo "$filename : Text file"
 ;;
 *) echo " $filename : Not processed"
 ;;
esac
done

$ ./filetype.sh
a.c : C source file
b.c : C source file
c1.txt : Text file
fileop.sh : Shell script
obj.o : Object file
text : Not processed
t.o : Object file

बैश केस उदाहरण 4. हां या नहीं के साथ शीघ्र उपयोगकर्ता

अधिकांश सॉफ्टवेयर इंस्टॉलेशन में, लाइसेंस समझौते के दौरान, यह उपयोगकर्ता से हां या ना में इनपुट मांगेगा। निम्नलिखित कोड स्निपेट उपयोगकर्ता से हां या ना में इनपुट प्राप्त करने का एक तरीका है।

$ cat yorno.sh
#!/bin/bash

echo -n "Do you agree with this? [yes or no]: "
read yno
case $yno in

 [yY] | [yY][Ee][Ss] )
 echo "Agreed"
 ;;

 [nN] | [n|N][O|o] )
 echo "Not agreed, you can't proceed the installation";
 exit 1
 ;;
 *) echo "Invalid input"
 ;;
esac

$ ./yorno.sh
Do you agree with this? [yes or no]: YES
Agreed

यदि पाइप वर्णों द्वारा अलग किए गए कई पैटर्न हैं, तो संबंधित कथनों को चलाने के लिए अभिव्यक्ति उनमें से किसी से भी मेल खा सकती है। एक मैच मिलने तक पैटर्न की जाँच की जाती है; अगर कोई नहीं मिला, तो कुछ नहीं होगा।

इसके अलावा, हमारे पहले के 15 बैश ऐरे उदाहरण लेख देखें।

बैश केस उदाहरण 5. स्टार्टअप स्क्रिप्ट

/etc/init.d निर्देशिका में स्टार्टअप स्क्रिप्ट एप्लिकेशन को प्रारंभ और बंद करने के लिए केस स्टेटमेंट का उपयोग करती है।

आप किसी भी प्रकार के पैटर्न का उपयोग कर सकते हैं, लेकिन जब आप प्राइमेटिव के मूल्यों पर परीक्षण कर रहे हों, तो हमेशा केस स्टेटमेंट का उपयोग करने की अनुशंसा की जाती है। (यानी पूर्णांक या वर्ण)।

$ cat startpcapp
#!/bin/bash

case "$1" in
'start')
echo "Starting application"
/usr/bin/startpc
;;
'stop')
echo "Stopping application"
/usr/bin/stoppc
;;
'restart')
echo "Usage: $0 [start|stop]"
;;
esac

$ ./startpcapp start
Starting application
/usr/bin/startpc started

अनुशंसित पठन

5 बैश केस स्टेटमेंट उदाहरणबैश 101 हैक्स, रमेश नटराजन द्वारा . मैं अपना अधिकांश समय लिनक्स पर्यावरण पर बिताता हूं। इसलिए, स्वाभाविक रूप से मैं बैश कमांड लाइन और शेल स्क्रिप्टिंग का बहुत बड़ा प्रशंसक हूं। 15 साल पहले, जब मैं * निक्स के विभिन्न स्वादों पर काम कर रहा था, मैं सी शेल और कॉर्न शेल पर बहुत सारे कोड लिखता था। बाद के वर्षों में, जब मैंने लिनक्स पर सिस्टम एडमिनिस्ट्रेटर के रूप में काम करना शुरू किया, तो मैंने बैश शेल स्क्रिप्टिंग का उपयोग करके हर संभव कार्य को स्वचालित रूप से स्वचालित कर दिया। अपने बैश अनुभव के आधार पर, मैंने बैश 101 हैक्स ईबुक लिखी है जिसमें बैश कमांड लाइन और शेल स्क्रिप्टिंग दोनों पर 101 व्यावहारिक उदाहरण हैं। यदि आप बैश में महारत हासिल करने के बारे में सोच रहे हैं, तो अपने आप पर एक एहसान करें और इस पुस्तक को पढ़ें, जो आपकी बैश कमांड लाइन और शेल स्क्रिप्टिंग को नियंत्रित करने में आपकी मदद करेगी।


  1. C++ में निर्णय लेना

    निर्णय लेने वाली संरचनाओं के लिए आवश्यक है कि प्रोग्रामर प्रोग्राम द्वारा मूल्यांकन या परीक्षण करने के लिए एक या अधिक शर्तों को निर्दिष्ट करे, साथ ही एक स्टेटमेंट या स्टेटमेंट को निष्पादित करने के लिए यदि शर्त सही है, और वैकल्पिक रूप से, अन्य स्टेटमेंट्स को निष्पादित किया जाना है यदि शर्त झूठा होना

  1. rbash - एक प्रतिबंधित बैश शेल व्यावहारिक उदाहरणों के साथ समझाया गया

    लिनक्स शेल सबसे आकर्षक और शक्तिशाली में से एक है GNU /लिनक्स संचालित उपकरण। X . सहित सभी एप्लिकेशन , शेल के ऊपर बनाया गया है और लिनक्स शेल इतना शक्तिशाली है कि इसका उपयोग करके पूरे लिनक्स सिस्टम को ठीक से नियंत्रित किया जा सकता है। लिनक्स शेल का दूसरा पहलू यह है कि, यह संभावित रूप से हानिकारक हो सकत

  1. अंतिम बैश ऐरे ट्यूटोरियल 15 उदाहरणों के साथ

    एक सरणी एक चर है जिसमें कई मान एक ही प्रकार के या विभिन्न प्रकार के हो सकते हैं। किसी सरणी के आकार की कोई अधिकतम सीमा नहीं है, न ही कोई आवश्यकता है कि सदस्य चर को अनुक्रमित किया जाए या सन्निहित रूप से असाइन किया जाए। ऐरे इंडेक्स शून्य से शुरू होता है। इस लेख में, आइए हम बैश में 15 विभिन्न सरणी संचा