Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

Bash विशेष पैरामीटर्स में मास्टर करें: 4 व्यावहारिक शेल स्क्रिप्ट उदाहरण

हमारी चल रही bash ट्यूटोरियल सीरीज़ के भाग के रूप में, हमने पिछले लेख में bash स्थितिगत पैरामीटर्स पर चर्चा की। इस लेख में आइए कुछ व्यावहारिक शेल स्क्रिप्ट उदाहरणों के साथ bash विशेष पैरामीटर्स पर चर्चा करें।

कुछ bash विशेष पैरामीटर्स जिन पर हम इस लेख में चर्चा करेंगे: $*, $@, $#, $$, $!, $?, $-, $_

पूरी स्थितिगत पैरामीटर्स की सूची तक पहुंचने के लिए, दो विशेष पैरामीटर्स $* और $@ उपलब्ध हैं। डबल कोट्स के बाहर, ये दोनों समतुल्य हैं: दोनों $1 से शुरू होने वाले स्थितिगत पैरामीटर्स की सूची में विस्तारित होते हैं (स्पेस द्वारा अलग)।

डबल कोट्स के भीतर, हालांकि, वे भिन्न होते हैं: डबल कोट्स की एक जोड़ी के भीतर $* स्थितिगत पैरामीटर्स की सूची के बराबर है, जो IFS के पहले वर्ण द्वारा अलग किए गए हैं "$1c$2c$3..."।

डबल कोट्स की एक जोड़ी के भीतर $@ स्थितिगत पैरामीटर्स की सूची के बराबर है, जो अनकोटेड स्पेस द्वारा अलग किए गए हैं, यानी, "$1" "$2"..."$N"।

उदाहरण 1: स्थितिगत पैरामीटर्स का विस्तार करने के लिए Bash $* और $@ का उपयोग करें

यह उदाहरण $* और $@ में उपलब्ध मान दिखाता है।

पहले, नीचे दिखाए अनुसार expan.sh बनाएं।

$ cat expan.sh #!/bin/bash export IFS='-' cnt=1 # $* में उपलब्ध डेटा प्रिंट करें echo "Values of \"\$*\":" for arg in "$*" do echo "Arg #$cnt= $arg" let "cnt+=1" done cnt=1 # $@ में उपलब्ध डेटा प्रिंट करें echo "Values of \"\$@\":" for arg in "$@" do echo "Arg #$cnt= $arg" let "cnt+=1" done

अगला, $* और $@ कैसे काम करते हैं यह देखने के लिए नीचे दिखाए अनुसार expan.sh निष्पादित करें।

$ ./expan.sh "This is" 2 3 Values of "$*": Arg #1= This is-2-3 Values of "$@": Arg #1= This is Arg #2= 2 Arg #3= 3
  • उपरोक्त स्क्रिप्ट ने IFS (आंतरिक फील्ड सेपरेटर) का मान '-' के साथ निर्यात किया।
  • स्क्रिप्ट expan.sh को तीन पैरामीटर पास किए गए हैं $1="This is",$2="2" और $3="3"।
  • विशेष पैरामीटर "$*" के प्रत्येक मान को प्रिंट करते समय, यह केवल एक मान देता है जो IFS द्वारा सीमित पूरे स्थितिगत पैरामीटर हैं।
  • जबकि "$@" आपको प्रत्येक पैरामीटर को अलग शब्द के रूप में देता है।

उदाहरण 2: स्थितिगत पैरामीटर्स गिनने के लिए $# का उपयोग करें

$# bash में विशेष पैरामीटर है जो आपको दशमलव में स्थितिगत पैरामीटर्स की संख्या देता है।

पहले, नीचे दिखाए अनुसार arithmetic.sh बनाएं।

$ cat arithmetic.sh #!/bin/bash if [ $# -lt 2 ] then echo "Usage: $0 arg1 arg2" exit fi echo -e "\$1=$1" echo -e "\$2=$2" let add=$1+$2 let sub=$1-$2 let mul=$1*$2 let div=$1/$2 echo -e "Addition=$add\nSubtraction=$sub\nMultiplication=$mul\nDivision=$div\n"

यदि स्थितिगत पैरामीटर्स की संख्या 2 से कम है, तो यह नीचे दिखाए अनुसार उपयोग जानकारी फेंक देगा,

$ ./arithemetic.sh 10 Usage: ./arithemetic.sh arg1 arg2

उदाहरण 3: प्रक्रिया संबंधी पैरामीटर्स - $$ और $!

विशेष पैरामीटर $$ शेल की प्रक्रिया आईडी देगा। $! आपको सबसे हाल ही में निष्पादित बैकग्राउंड प्रक्रिया की प्रक्रिया आईडी देता है।

निम्नलिखित स्क्रिप्ट शेल की प्रक्रिया आईडी और अंतिम निष्पादित बैकग्राउंड प्रक्रिया आईडी प्रिंट करती है।

$ cat proc.sh #!/bin/bash echo -e "Process ID=$$" sleep 1000 & echo -e "Background Process ID=$!"

अब, उपरोक्त स्क्रिप्ट निष्पादित करें, और प्रक्रिया आईडी जांचें जो यह प्रिंट कर रहा है।

$ ./proc.sh Process ID=9502 Background Process ID=9503 $ ps PID TTY TIME CMD 5970 pts/1 00:00:00 bash 9503 pts/1 00:00:00 sleep 9504 pts/1 00:00:00 ps $

उदाहरण 4: अन्य Bash विशेष पैरामीटर्स - $?, $-, $_

  • $? सबसे हाल ही में निष्पादित कमांड की एग्जिट स्टेटस देता है।
  • $- set बिल्ट-इन कमांड का उपयोग करके सेट विकल्प
  • $_ पिछली कमांड का अंतिम आर्ग्यूमेंट देता है। शेल स्टार्टअप पर, यह निष्पादित किए जा रहे शेल स्क्रिप्ट का पूर्ण फ़ाइलनाम देता है।
$ cat others.sh #!/bin/bash echo -e "$_"; ## निष्पादित की जा रही फ़ाइल का पूर्ण नाम /usr/local/bin/dbhome # कमांड निष्पादित करें। # dbhome की एग्जिट स्टेटस जांचें if [ "$?" -ne "0" ]; then echo "Sorry, Command execution failed !" fi echo -e "$-"; # सेट विकल्प - hB echo -e $_ # पिछली कमांड का अंतिम आर्ग्यूमेंट।

उपरोक्त स्क्रिप्ट में, अंतिम echo स्टेटमेंट "echo -e $_" ($ अंडरस्कोर) भी hB प्रिंट करता है जो पिछली कमांड के अंतिम आर्ग्यूमेंट का मान है। इसलिए $_ विस्तार के बाद मान देगा

$ ./others.sh ./others.sh /home/oracle Sorry, Command execution failed ! hB hB
  1. rbash: रिस्ट्रिक्टेड Bash शेल में महारत - अवधारणाएं, उपयोग और व्यावहारिक उदाहरण rbash: रिस्ट्रिक्टेड Bash शेल में महारत - अवधारणाएं, उपयोग और व्यावहारिक उदाहरण

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

  1. शेल ट्रेसिंग में मास्टरी: कमांड निष्पादन डीबगिंग के लिए चरण-दर-चरण शेल ट्रेसिंग में मास्टरी: कमांड निष्पादन डीबगिंग के लिए चरण-दर-चरण

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

  1. Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स

    Bash शेल फ़ंक्शन्स कई UNIX / Linux कमांड्स को बाद में निष्पादन के लिए एक ही नाम का उपयोग करके समूहबद्ध करने का एक तरीका है। Bash शेल फ़ंक्शन को नियमित Unix कमांड की तरह निष्पादित किया जा सकता है। शेल फ़ंक्शन्स को किसी नई प्रक्रिया को बनाए बिना वर्तमान शेल संदर्भ में निष्पादित किया जाता है। Bash alia