<पी> लिनक्स में, प्रक्रिया स्वचालन शेल स्क्रिप्टिंग पर बहुत अधिक निर्भर करता है। इसमें एक फ़ाइल बनाना शामिल है जिसमें कमांड की एक श्रृंखला होती है जिसे एक साथ निष्पादित किया जा सकता है। <पी> इस लेख में, हम बैश स्क्रिप्टिंग की मूल बातों से शुरुआत करेंगे जिसमें वेरिएबल, कमांड, इनपुट/आउटपुट और डिबगिंग शामिल हैं। हम रास्ते में प्रत्येक के उदाहरण भी देखेंगे। <पी> आइए शुरू करें. 🚀 सामग्री तालिका
- पूर्वावश्यकताएँ
- परिचय
- बैश स्क्रिप्टिंग की परिभाषा
- बैश स्क्रिप्टिंग के लाभ
- बैश शेल और कमांड लाइन इंटरफ़ेस का अवलोकन
- बैश स्क्रिप्टिंग से कैसे शुरुआत करें
- कमांड लाइन से बैश कमांड कैसे चलाएं
- बैश स्क्रिप्ट कैसे बनाएं और निष्पादित करें
- <पी> बैश स्क्रिप्टिंग मूल बातें
- <पी> बैश स्क्रिप्टिंग में टिप्पणियाँ
- बैश में वेरिएबल और डेटा प्रकार
- बैश स्क्रिप्ट में इनपुट और आउटपुट
- बेसिक बैश कमांड (इको, रीड, आदि)
- <पी> सशर्त कथन (यदि/अन्यथा)
- <पी> बैश में लूपिंग और ब्रांचिंग
- जबकि लूप
- लूप के लिए
- केस स्टेटमेंट
- क्रॉन का उपयोग करके स्क्रिप्ट कैसे शेड्यूल करें
- बैश स्क्रिप्ट को डिबग और समस्या निवारण कैसे करें
- निष्कर्ष
- बैश स्क्रिप्टिंग के बारे में अधिक जानने के लिए संसाधन
पूर्वावश्यकताएँ
<पी> इस ट्यूटोरियल का अनुसरण करने के लिए, आपके पास निम्नलिखित एक्सेस होनी चाहिए: - कमांड लाइन तक पहुंच के साथ लिनक्स का एक चालू संस्करण।
<पी> यदि आपके पास लिनक्स स्थापित नहीं है या आप अभी शुरुआत कर रहे हैं, तो आप रिप्लिट के माध्यम से आसानी से लिनक्स कमांड लाइन तक पहुंच सकते हैं। रिप्लिट एक ब्राउज़र-आधारित आईडीई है जहां आप कुछ ही मिनटों में बैश शेल तक पहुंच सकते हैं। <पी> आप WSL (लिनक्स के लिए विंडोज़ सबसिस्टम) का उपयोग करके अपने विंडोज़ सिस्टम के शीर्ष पर लिनक्स भी स्थापित कर सकते हैं। यहां उसके लिए एक ट्यूटोरियल है। परिचय
बैश स्क्रिप्टिंग की परिभाषा
<पी> बैश स्क्रिप्ट एक फ़ाइल है जिसमें कमांड का अनुक्रम होता है जिसे बैश प्रोग्राम द्वारा लाइन दर लाइन निष्पादित किया जाता है। यह आपको कार्यों की एक श्रृंखला करने की अनुमति देता है, जैसे किसी विशिष्ट निर्देशिका पर नेविगेट करना, एक फ़ोल्डर बनाना और कमांड लाइन का उपयोग करके एक प्रक्रिया लॉन्च करना। पी> <पी> इन आदेशों को एक स्क्रिप्ट में सहेजकर, आप चरणों के एक ही क्रम को कई बार दोहरा सकते हैं और स्क्रिप्ट चलाकर उन्हें निष्पादित कर सकते हैं। बैश स्क्रिप्टिंग के लाभ
<पी> बैश स्क्रिप्टिंग सिस्टम प्रशासन कार्यों को स्वचालित करने, सिस्टम संसाधनों को प्रबंधित करने और यूनिक्स/लिनक्स सिस्टम में अन्य नियमित कार्यों को करने के लिए एक शक्तिशाली और बहुमुखी उपकरण है। शेल स्क्रिप्टिंग के कुछ फायदे हैं: - स्वचालन :शेल स्क्रिप्ट आपको दोहराए जाने वाले कार्यों और प्रक्रियाओं को स्वचालित करने की अनुमति देती है, जिससे समय की बचत होती है और मैन्युअल निष्पादन के साथ होने वाली त्रुटियों का जोखिम कम हो जाता है।
- पोर्टेबिलिटी :शेल स्क्रिप्ट को एमुलेटर या वर्चुअल मशीन के उपयोग के माध्यम से यूनिक्स, लिनक्स, मैकओएस और यहां तक कि विंडोज सहित विभिन्न प्लेटफार्मों और ऑपरेटिंग सिस्टम पर चलाया जा सकता है।
- लचीलापन :शेल स्क्रिप्ट अत्यधिक अनुकूलन योग्य हैं और इन्हें विशिष्ट आवश्यकताओं के अनुरूप आसानी से संशोधित किया जा सकता है। अधिक शक्तिशाली स्क्रिप्ट बनाने के लिए उन्हें अन्य प्रोग्रामिंग भाषाओं या उपयोगिताओं के साथ भी जोड़ा जा सकता है।
- पहुंच-योग्यता :शेल स्क्रिप्ट लिखना आसान है और इसके लिए किसी विशेष उपकरण या सॉफ़्टवेयर की आवश्यकता नहीं होती है। उन्हें किसी भी टेक्स्ट एडिटर का उपयोग करके संपादित किया जा सकता है, और अधिकांश ऑपरेटिंग सिस्टम में एक अंतर्निहित शेल दुभाषिया होता है।
- एकीकरण :शेल स्क्रिप्ट को अन्य टूल और एप्लिकेशन, जैसे डेटाबेस, वेब सर्वर और क्लाउड सेवाओं के साथ एकीकृत किया जा सकता है, जिससे अधिक जटिल स्वचालन और सिस्टम प्रबंधन कार्यों की अनुमति मिलती है।
- डिबगिंग :शेल स्क्रिप्ट को डीबग करना आसान है, और अधिकांश शेल में अंतर्निहित डिबगिंग और त्रुटि-रिपोर्टिंग टूल हैं जो समस्याओं को तुरंत पहचानने और ठीक करने में मदद कर सकते हैं।
बैश शेल और कमांड लाइन इंटरफ़ेस का अवलोकन
<पी> शब्द "शेल" और "बैश" का प्रयोग परस्पर उपयोग किया जाता है। लेकिन दोनों के बीच एक सूक्ष्म अंतर है. पी> <पी> शब्द "शेल" एक प्रोग्राम को संदर्भित करता है जो एक ऑपरेटिंग सिस्टम के साथ इंटरैक्ट करने के लिए एक कमांड-लाइन इंटरफ़ेस प्रदान करता है। बैश (बॉर्न-अगेन शेल) सबसे अधिक उपयोग किए जाने वाले यूनिक्स/लिनक्स शेल में से एक है और कई लिनक्स वितरणों में डिफ़ॉल्ट शेल है। <पी> एक शेल या कमांड-लाइन इंटरफ़ेस इस तरह दिखता है: <पी>
शेल उपयोगकर्ता से कमांड स्वीकार करता है और आउटपुट प्रदर्शित करता है पी> <पी> उपरोक्त आउटपुट में, zaira@Zaira शेल प्रॉम्प्ट है. जब किसी शेल का उपयोग अंतःक्रियात्मक रूप से किया जाता है, तो यह एक $ प्रदर्शित करता है जब यह उपयोगकर्ता से आदेश की प्रतीक्षा कर रहा हो। पी> <पी> यदि शेल रूट (प्रशासनिक अधिकारों वाला उपयोगकर्ता) के रूप में चल रहा है, तो प्रॉम्प्ट को # में बदल दिया जाता है . सुपरयूजर शेल प्रॉम्प्ट इस तरह दिखता है: [root@host ~]#
<पी> हालाँकि बैश एक प्रकार का शेल है, अन्य शेल भी उपलब्ध हैं, जैसे कॉर्न शेल (ksh), C शेल (csh), और Z शेल (zsh)। प्रत्येक शेल का अपना सिंटैक्स और सुविधाओं का सेट होता है, लेकिन वे सभी ऑपरेटिंग सिस्टम के साथ इंटरैक्ट करने के लिए कमांड-लाइन इंटरफ़ेस प्रदान करने के सामान्य उद्देश्य को साझा करते हैं। <पी> आप ps का उपयोग करके अपना शेल प्रकार निर्धारित कर सकते हैं आदेश: ps
<पी> यहां मेरे लिए आउटपुट है: <पी>
शेल प्रकार की जाँच करना। मैं बैश शेलका उपयोग कर रहा हूं पी> <पी> संक्षेप में, जबकि "शेल" एक व्यापक शब्द है जो किसी भी प्रोग्राम को संदर्भित करता है जो कमांड-लाइन इंटरफ़ेस प्रदान करता है, "बैश" एक विशिष्ट प्रकार का शेल है जो यूनिक्स/लिनक्स सिस्टम में व्यापक रूप से उपयोग किया जाता है। <पी> नोट:इस ट्यूटोरियल में, हम "बैश" शेल का उपयोग करेंगे। बैश स्क्रिप्टिंग से कैसे शुरुआत करें
कमांड लाइन से बैश कमांड चलाना
<पी> जैसा कि पहले बताया गया है, शेल प्रॉम्प्ट कुछ इस तरह दिखता है: [username@host ~]$
<पी> आप $ के बाद कोई भी कमांड दर्ज कर सकते हैं हस्ताक्षर करें और टर्मिनल पर आउटपुट देखें। <पी> आम तौर पर, कमांड इस सिंटैक्स का पालन करते हैं: command [OPTIONS] arguments
<पी> आइए कुछ बुनियादी बैश कमांड पर चर्चा करें और उनके आउटपुट देखें। साथ चलना सुनिश्चित करें :) date :वर्तमान दिनांक प्रदर्शित करता है
zaira@Zaira:~/shell-tutorial$ date
Tue Mar 14 13:08:57 PKT 2023
pwd :वर्तमान कार्यशील निर्देशिका प्रदर्शित करता है।
zaira@Zaira:~/shell-tutorial$ pwd
/home/zaira/shell-tutorial
ls :वर्तमान निर्देशिका की सामग्री को सूचीबद्ध करता है।
zaira@Zaira:~/shell-tutorial$ ls
check_plaindrome.sh count_odd.sh env log temp
echo :टेक्स्ट की एक स्ट्रिंग, या एक वेरिएबल के मान को टर्मिनल पर प्रिंट करता है।
zaira@Zaira:~/shell-tutorial$ echo "Hello bash"
Hello bash
<पी> आप हमेशा man के साथ कमांड मैनुअल का संदर्भ ले सकते हैं आदेश. <पी> उदाहरण के लिए, ls के लिए मैनुअल कुछ इस तरह दिखता है: <पी>
आप man का उपयोग करके किसी कमांड के लिए विस्तृत विकल्प देख सकते हैं पी> बैश स्क्रिप्ट कैसे बनाएं और निष्पादित करें
स्क्रिप्ट नामकरण परंपराएँ
<पी> नामकरण परंपरा से, बैश स्क्रिप्ट .sh पर समाप्त होती है . हालाँकि, बैश स्क्रिप्ट sh के बिना बिल्कुल ठीक चल सकती है विस्तार. शेबांग जोड़ना
<पी> बैश स्क्रिप्ट shebang से शुरू होती है . शेबांग bash # का एक संयोजन है और bang ! बैश शेल पथ के बाद। यह स्क्रिप्ट की पहली पंक्ति है. शेबैंग शेल को बैश शेल के माध्यम से इसे निष्पादित करने के लिए कहता है। शेबांग बस बैश दुभाषिया के लिए एक पूर्ण मार्ग है। <पी> नीचे शेबंग कथन का एक उदाहरण दिया गया है। #!/bin/bash
<पी> आप कमांड का उपयोग करके अपना बैश शेल पथ (जो ऊपर से भिन्न हो सकता है) पा सकते हैं: which bash
हमारी पहली बैश स्क्रिप्ट बनाना
<पी> हमारी पहली स्क्रिप्ट उपयोगकर्ता को एक पथ दर्ज करने के लिए संकेत देती है। बदले में, इसकी सामग्री सूचीबद्ध की जाएगी। पी> <पी> run_all.sh नाम की एक फ़ाइल बनाएं vi का उपयोग करना आदेश. आप अपनी पसंद के किसी भी संपादक का उपयोग कर सकते हैं. पी> vi run_all.sh
<पी> अपनी फ़ाइल में निम्नलिखित कमांड जोड़ें और इसे सहेजें: #!/bin/bash
echo "Today is " `date`
echo -e "\nenter the path to directory"
read the_path
echo -e "\n you path has the following files and folders: "
ls $the_path
<पी> आइए पंक्ति दर पंक्ति स्क्रिप्ट पर गहराई से नज़र डालें। मैं वही स्क्रिप्ट दोबारा प्रदर्शित कर रहा हूं, लेकिन इस बार लाइन नंबरों के साथ। पी> 1 #!/bin/bash
2 echo "Today is " `date`
3
4 echo -e "\nenter the path to directory"
5 read the_path
6
7 echo -e "\n you path has the following files and folders: "
8 ls $the_path
- पंक्ति #1:शेबंग (
#!/bin/bash ) बैश शेल पथ की ओर इंगित करता है।
- पंक्ति #2:
echo कमांड टर्मिनल पर वर्तमान दिनांक और समय प्रदर्शित कर रहा है। ध्यान दें कि date बैकटिक्स में है.
- पंक्ति #4:हम चाहते हैं कि उपयोगकर्ता एक वैध पथ दर्ज करे।
- पंक्ति #5:
read कमांड इनपुट को पढ़ता है और इसे वेरिएबल the_path में संग्रहीत करता है .
- पंक्ति #8:
ls कमांड संग्रहित पथ के साथ वेरिएबल लेता है और वर्तमान फ़ाइलों और फ़ोल्डरों को प्रदर्शित करता है।
बैश स्क्रिप्ट निष्पादित करना
<पी> स्क्रिप्ट को निष्पादन योग्य बनाने के लिए, इस कमांड का उपयोग करके अपने उपयोगकर्ता को निष्पादन अधिकार निर्दिष्ट करें: chmod u+x run_all.sh
<पी> यहाँ, chmod वर्तमान उपयोगकर्ता के लिए फ़ाइल के स्वामित्व को संशोधित करता है:u .
+x वर्तमान उपयोगकर्ता के लिए निष्पादन अधिकार जोड़ता है। इसका मतलब यह है कि जो उपयोगकर्ता मालिक है वह अब स्क्रिप्ट चला सकता है।
run_all.sh यह वह फ़ाइल है जिसे हम चलाना चाहते हैं।
<पी> आप उल्लिखित किसी भी विधि का उपयोग करके स्क्रिप्ट चला सकते हैं: sh run_all.sh
bash run_all.sh
./run_all.sh
<पी> आइए इसे क्रियान्वित होते हुए देखें 🚀 <पी>
बैश स्क्रिप्टिंग मूल बातें
<पी> टिप्पणियाँ # से शुरू होती हैं बैश स्क्रिप्टिंग में। इसका मतलब यह है कि कोई भी लाइन जो # से शुरू होती है एक टिप्पणी है और दुभाषिया द्वारा इसे नजरअंदाज कर दिया जाएगा। पी> <पी> टिप्पणियाँ कोड का दस्तावेज़ीकरण करने में बहुत सहायक होती हैं, और दूसरों को कोड समझने में मदद करने के लिए उन्हें जोड़ना एक अच्छा अभ्यास है। पी> <पी> ये टिप्पणियों के उदाहरण हैं: # This is an example comment
# Both of these lines will be ignored by the interpreter
बैश में वेरिएबल और डेटा प्रकार
<पी> वेरिएबल आपको डेटा संग्रहीत करने देते हैं। आप अपनी पूरी स्क्रिप्ट में डेटा को पढ़ने, एक्सेस करने और हेरफेर करने के लिए वेरिएबल का उपयोग कर सकते हैं। पी> <पी> बैश में कोई डेटा प्रकार नहीं हैं। बैश में, एक वेरिएबल संख्यात्मक मान, व्यक्तिगत वर्ण, या वर्णों की स्ट्रिंग संग्रहीत करने में सक्षम है। <पी> बैश में, आप निम्नलिखित तरीकों से वेरिएबल मानों का उपयोग और सेट कर सकते हैं: - मान सीधे निर्दिष्ट करें:
country=Pakistan
- कमांड प्रतिस्थापन का उपयोग करके किसी प्रोग्राम या कमांड से प्राप्त आउटपुट के आधार पर मान निर्दिष्ट करें। ध्यान दें कि
$ किसी मौजूदा वैरिएबल के मान तक पहुंचने के लिए आवश्यक है।
same_country=$country
<पी> वेरिएबल मान तक पहुंचने के लिए, $ जोड़ें वेरिएबल नाम के लिए. zaira@Zaira:~$ country=Pakistan
zaira@Zaira:~$ echo $country
Pakistan
zaira@Zaira:~$ new_country=$country
zaira@Zaira:~$ echo $new_country
Pakistan
परिवर्तनीय नामकरण परंपराएँ
<पी> बैश स्क्रिप्टिंग में, वेरिएबल नामकरण परंपराएँ निम्नलिखित हैं: - परिवर्तनीय नाम एक अक्षर या अंडरस्कोर (
_) से शुरू होने चाहिए ).
- परिवर्तनीय नामों में अक्षर, संख्याएं और अंडरस्कोर हो सकते हैं (
_ ).
- परिवर्तनीय नाम केस-संवेदी होते हैं।
- परिवर्तनीय नामों में रिक्त स्थान या विशेष वर्ण नहीं होने चाहिए।
- वर्णनात्मक नामों का उपयोग करें जो चर के उद्देश्य को दर्शाते हैं।
- आरक्षित कीवर्ड, जैसे
if का उपयोग करने से बचें , then , else , fi , और इसी तरह परिवर्तनीय नामों के रूप में।
<पी> यहां बैश में मान्य वैरिएबल नामों के कुछ उदाहरण दिए गए हैं: name
count
_var
myVar
MY_VAR
<पी> और यहां अमान्य चर नामों के कुछ उदाहरण दिए गए हैं: 2ndvar (variable name starts with a number)
my var (variable name contains a space)
my-var (variable name contains a hyphen)
<पी> इन नामकरण परंपराओं का पालन करने से बैश स्क्रिप्ट को अधिक पठनीय और बनाए रखने में आसान बनाने में मदद मिलती है। बैश स्क्रिप्ट में इनपुट और आउटपुट
इनपुट एकत्र करना
<पी> इस अनुभाग में, हम अपनी स्क्रिप्ट में इनपुट प्रदान करने के कुछ तरीकों पर चर्चा करेंगे। पी> - उपयोगकर्ता इनपुट को पढ़ना और उसे एक वेरिएबल में संग्रहीत करना
<पी> हम read का उपयोग करके उपयोगकर्ता इनपुट पढ़ सकते हैं आदेश. #!/bin/bash
echo "What's your name?"
read entered_name
echo -e "\nWelcome to bash tutorial" $entered_name
<पी>
- फ़ाइल से पढ़ना
<पी> यह कोड input.txt नामक फ़ाइल की प्रत्येक पंक्ति को पढ़ता है और इसे टर्मिनल पर प्रिंट करता है। हम इस लेख में बाद में while लूप्स का अध्ययन करेंगे। while read line
do
echo $line
done < input.txt
- कमांड लाइन तर्क
<पी> बैश स्क्रिप्ट या फ़ंक्शन में, $1 पारित प्रारंभिक तर्क को दर्शाता है, $2 पारित दूसरे तर्क को दर्शाता है, इत्यादि। <पी> यह स्क्रिप्ट कमांड-लाइन तर्क के रूप में एक नाम लेती है और एक वैयक्तिकृत अभिवादन प्रिंट करती है। echo "Hello, $1!"
<पी> हमने Zaira की आपूर्ति की है स्क्रिप्ट के प्रति हमारे तर्क के रूप में। #!/bin/bash
echo "Hello, $1!"
<पी> आउटपुट: पी> <पी>
आउटपुट प्रदर्शित हो रहा है
<पी> यहां हम स्क्रिप्ट से आउटपुट प्राप्त करने के कुछ तरीकों पर चर्चा करेंगे। - टर्मिनल पर मुद्रण:
echo "Hello, World!"
<पी> यह "हैलो, वर्ल्ड!" टेक्स्ट प्रिंट करता है। टर्मिनल तक. - फ़ाइल में लिखना:
echo "This is some text." > output.txt
<पी> यह पाठ लिखता है "यह कुछ पाठ है।" output.txt नामक फ़ाइल में . ध्यान दें कि > यदि किसी फ़ाइल में पहले से ही कुछ सामग्री है तो ऑपरेटर उसे अधिलेखित कर देता है। पी> - किसी फ़ाइल में जोड़ना:
echo "More text." >> output.txt
<पी> यह "अधिक पाठ" पाठ जोड़ता है। फ़ाइल के अंत तक output.txt . - आउटपुट को पुनर्निर्देशित करना:
ls > files.txt
<पी> यह वर्तमान निर्देशिका में फ़ाइलों को सूचीबद्ध करता है और आउटपुट को files.txt नामक फ़ाइल में लिखता है . आप इस तरह से किसी भी कमांड के आउटपुट को फ़ाइल में रीडायरेक्ट कर सकते हैं। बेसिक बैश कमांड (इको, रीड, आदि)
<पी> यहां कुछ सबसे अधिक उपयोग किए जाने वाले बैश कमांड की सूची दी गई है: cd :निर्देशिका को किसी भिन्न स्थान पर बदलें।
ls :वर्तमान निर्देशिका की सामग्री सूचीबद्ध करें।
mkdir :एक नई निर्देशिका बनाएं.
touch :एक नई फ़ाइल बनाएं.
rm :किसी फ़ाइल या निर्देशिका को हटाएँ.
cp :किसी फ़ाइल या निर्देशिका की प्रतिलिपि बनाएँ।
mv :किसी फ़ाइल या निर्देशिका को स्थानांतरित करें या उसका नाम बदलें।
echo :टर्मिनल पर टेक्स्ट प्रिंट करें।
cat :फ़ाइल की सामग्री को जोड़ें और प्रिंट करें।
grep :फ़ाइल में एक पैटर्न खोजें।
chmod :किसी फ़ाइल या निर्देशिका की अनुमतियाँ बदलें।
sudo :प्रशासनिक विशेषाधिकारों के साथ एक कमांड चलाएँ।
df :उपलब्ध डिस्क स्थान की मात्रा प्रदर्शित करें।
history :पहले निष्पादित आदेशों की एक सूची दिखाएं।
ps :चल रही प्रक्रियाओं के बारे में जानकारी प्रदर्शित करें।
सशर्त बयान (यदि/अन्यथा)
<पी> वे अभिव्यक्तियाँ जो एक बूलियन परिणाम उत्पन्न करती हैं, या तो सही या गलत, स्थितियाँ कहलाती हैं। स्थितियों का मूल्यांकन करने के कई तरीके हैं, जिनमें if शामिल हैं , if-else , if-elif-else , और नेस्टेड सशर्त। <पी> वाक्यविन्यास : if [[ condition ]];
then
statement
elif [[ condition ]]; then
statement
else
do this by default
fi
<पी> हम AND -a जैसे तार्किक ऑपरेटरों का उपयोग कर सकते हैं और या -o ऐसी तुलनाएँ करना जिनका अधिक महत्व हो। पी> if [ $a -gt 60 -a $b -lt 100 ]
<पी> आइए बैश स्क्रिप्ट का एक उदाहरण देखें जो if का उपयोग करता है , if-else , और if-elif-else यह निर्धारित करने के लिए कथन कि उपयोगकर्ता द्वारा इनपुट किया गया नंबर सकारात्मक, नकारात्मक या शून्य है: #!/bin/bash
echo "Please enter a number: "
read num
if [ $num -gt 0 ]; then
echo "$num is positive"
elif [ $num -lt 0 ]; then
echo "$num is negative"
else
echo "$num is zero"
fi
<पी> स्क्रिप्ट पहले उपयोगकर्ता को एक नंबर दर्ज करने के लिए संकेत देती है। फिर, यह if का उपयोग करता है यह जांचने के लिए कथन कि क्या संख्या 0 से अधिक है। यदि यह है, तो स्क्रिप्ट आउटपुट करती है कि संख्या सकारात्मक है। यदि संख्या 0 से अधिक नहीं है, तो स्क्रिप्ट अगले कथन पर चली जाती है, जो एक if-elif है बयान. यहां, स्क्रिप्ट जांचती है कि क्या संख्या 0 से कम है। यदि ऐसा है, तो स्क्रिप्ट आउटपुट करती है कि संख्या नकारात्मक है। अंत में, यदि संख्या न तो 0 से अधिक है और न ही 0 से कम है, तो स्क्रिप्ट else का उपयोग करती है आउटपुट के लिए कथन कि संख्या शून्य है। <पी> इसे क्रियान्वित होते देखना 🚀 <पी>
बैश में लूपिंग और ब्रांचिंग
जबकि लूप
<पी> जबकि लूप एक स्थिति की जांच करते हैं और तब तक लूप करते हैं जब तक स्थिति true बनी रहती है . हमें एक काउंटर स्टेटमेंट प्रदान करने की आवश्यकता है जो लूप निष्पादन को नियंत्रित करने के लिए काउंटर को बढ़ाता है। <पी> नीचे दिए गए उदाहरण में, (( i += 1 )) काउंटर स्टेटमेंट है जो i का मान बढ़ाता है . लूप ठीक 10 बार चलेगा। #!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
echo "$i"
(( i += 1 ))
done
<पी>
लूप के लिए
<पी> for लूप, बिल्कुल while की तरह लूप, आपको कथनों को विशिष्ट संख्या में निष्पादित करने की अनुमति देता है। प्रत्येक लूप अपने सिंटैक्स और उपयोग में भिन्न होता है। <पी> नीचे दिए गए उदाहरण में, लूप 5 बार पुनरावृत्त होगा। #!/bin/bash
for i in {1..5}
do
echo $i
done
<पी>
केस स्टेटमेंट
<पी> बैश में, केस स्टेटमेंट का उपयोग पैटर्न की सूची के विरुद्ध दिए गए मान की तुलना करने और मेल खाने वाले पहले पैटर्न के आधार पर कोड के ब्लॉक को निष्पादित करने के लिए किया जाता है। बैश में केस स्टेटमेंट का सिंटैक्स इस प्रकार है: case expression in
pattern1)
# code to execute if expression matches pattern1
;;
pattern2)
# code to execute if expression matches pattern2
;;
pattern3)
# code to execute if expression matches pattern3
;;
*)
# code to execute if none of the above patterns match expression
;;
esac
<पी> यहां, "अभिव्यक्ति" वह मान है जिसकी हम तुलना करना चाहते हैं, और "पैटर्न1", "पैटर्न2", "पैटर्न3", इत्यादि वे पैटर्न हैं जिनके विरुद्ध हम इसकी तुलना करना चाहते हैं। पी> <पी> दोहरा अर्धविराम ";;" प्रत्येक पैटर्न के लिए निष्पादित करने के लिए कोड के प्रत्येक ब्लॉक को अलग करता है। तारांकन चिह्न "*" डिफ़ॉल्ट मामले का प्रतिनिधित्व करता है, जो तब निष्पादित होता है जब निर्दिष्ट पैटर्न में से कोई भी अभिव्यक्ति से मेल नहीं खाता है। <पी> आइए एक उदाहरण देखें। fruit="apple"
case $fruit in
"apple")
echo "This is a red fruit."
;;
"banana")
echo "This is a yellow fruit."
;;
"orange")
echo "This is an orange fruit."
;;
*)
echo "Unknown fruit."
;;
esac
<पी> इस उदाहरण में, चूँकि "फल" का मान "सेब" है, पहला पैटर्न मेल खाता है, और कोड का ब्लॉक जो प्रतिध्वनित करता है "यह एक लाल फल है।" निष्पादित किया जाता है। यदि "फल" का मूल्य "केला" के बजाय होता, तो दूसरा पैटर्न मेल खाता और कोड का ब्लॉक जो प्रतिध्वनित होता है "यह एक पीला फल है।" निष्पादित करेगा, इत्यादि। यदि "फल" का मान किसी भी निर्दिष्ट पैटर्न से मेल नहीं खाता है, तो डिफ़ॉल्ट केस निष्पादित होता है, जो "अज्ञात फल" को प्रतिध्वनित करता है। क्रॉन का उपयोग करके स्क्रिप्ट कैसे शेड्यूल करें
<पी> क्रॉन जॉब शेड्यूलिंग के लिए एक शक्तिशाली उपयोगिता है जो यूनिक्स जैसे ऑपरेटिंग सिस्टम में उपलब्ध है। क्रॉन को कॉन्फ़िगर करके, आप दैनिक, साप्ताहिक, मासिक या विशिष्ट समय के आधार पर चलने के लिए स्वचालित कार्य सेट कर सकते हैं। क्रॉन द्वारा प्रदान की गई स्वचालन क्षमताएं लिनक्स सिस्टम प्रशासन में महत्वपूर्ण भूमिका निभाती हैं। <पी> क्रॉन शेड्यूल करने का सिंटैक्स नीचे दिया गया है: # Cron job example
* * * * * sh /path/to/script.sh
<पी> यहां, * s क्रमशः मिनट(ओं) घंटे(ओं) दिन(दिनों) महीने(ओं) को दर्शाता है। <पी> क्रॉन जॉब शेड्यूल करने के कुछ उदाहरण नीचे दिए गए हैं। शेड्यूल | विवरण | उदाहरण | 0 0 हर दिन आधी रात को एक स्क्रिप्ट चलाएँ 0 0 /path/to/script.sh /5 हर 5 मिनट में एक स्क्रिप्ट चलाएँ /5 /path/to/script.sh 0 6 1-5 सोमवार से शुक्रवार सुबह 6 बजे 0 6 1-5 /path/to/script.sh स्क्रिप्ट चलाएँ 0 0 1-7 प्रत्येक माह के पहले 7 दिनों0 0 1-7 /path/to/script.sh पर एक स्क्रिप्ट चलाएँ 0 12 1 हर महीने के पहले दिन दोपहर0 12 1 /path/to/script.sh पर एक स्क्रिप्ट चलाएँ क्रोंटैब का उपयोग करना
<पी> crontab यूटिलिटी का उपयोग क्रॉन जॉब्स को जोड़ने और संपादित करने के लिए किया जाता है। <पी> crontab -l किसी विशेष उपयोगकर्ता के लिए पहले से निर्धारित स्क्रिप्ट को सूचीबद्ध करता है। <पी> आप crontab -e के माध्यम से क्रॉन जोड़ और संपादित कर सकते हैं . <पी> आप यहां मेरे अन्य लेख में मकई की नौकरियों के बारे में अधिक पढ़ सकते हैं। पी> कैसे डिबग करें और बैश स्क्रिप्ट का समस्या निवारण करें
<पी> डिबगिंग और समस्या निवारण किसी भी बैश स्क्रिप्टर के लिए आवश्यक कौशल हैं। जबकि बैश स्क्रिप्ट अविश्वसनीय रूप से शक्तिशाली हो सकती हैं, उनमें त्रुटियों और अप्रत्याशित व्यवहार का भी खतरा हो सकता है। इस अनुभाग में, हम डिबगिंग और बैश स्क्रिप्ट के समस्या निवारण के लिए कुछ युक्तियों और तकनीकों पर चर्चा करेंगे। set -x सेट करें विकल्प
<पी> बैश स्क्रिप्ट को डीबग करने के लिए सबसे उपयोगी तकनीकों में से एक set -x सेट करना है स्क्रिप्ट की शुरुआत में विकल्प। यह विकल्प डिबगिंग मोड को सक्षम करता है, जिसके कारण बैश टर्मिनल पर निष्पादित प्रत्येक कमांड को + से पहले प्रिंट करता है। संकेत. यह यह पहचानने में अविश्वसनीय रूप से सहायक हो सकता है कि आपकी स्क्रिप्ट में त्रुटियाँ कहाँ हो रही हैं। #!/bin/bash
set -x
# Your script goes here
निकास कोड जांचें
<पी> जब बैश किसी त्रुटि का सामना करता है, तो यह एक निकास कोड सेट करता है जो त्रुटि की प्रकृति को इंगित करता है। आप $? का उपयोग करके नवीनतम कमांड के निकास कोड की जांच कर सकते हैं परिवर्तनशील. 0 का मान सफलता को इंगित करता है, जबकि कोई अन्य मान त्रुटि को इंगित करता है। #!/bin/bash
# Your script goes here
if [ $? -ne 0 ]; then
echo "Error occurred."
fi
echo का उपयोग करें कथन
<पी> बैश स्क्रिप्ट को डीबग करने के लिए एक अन्य उपयोगी तकनीक echo सम्मिलित करना है आपके पूरे कोड में कथन। इससे आपको यह पहचानने में मदद मिल सकती है कि त्रुटियाँ कहाँ हो रही हैं और कौन से मान वेरिएबल्स को दिए जा रहे हैं। #!/bin/bash
# Your script goes here
echo "Value of variable x is: $x"
# More code goes here
set -e का उपयोग करें विकल्प
<पी> यदि आप चाहते हैं कि स्क्रिप्ट में कोई भी कमांड विफल होने पर आपकी स्क्रिप्ट तुरंत बाहर निकल जाए, तो आप set -e का उपयोग कर सकते हैं विकल्प. यदि स्क्रिप्ट में कोई भी कमांड विफल हो जाता है तो यह विकल्प बैश को एक त्रुटि के साथ बाहर निकलने का कारण बनेगा, जिससे आपकी स्क्रिप्ट में त्रुटियों को पहचानना और ठीक करना आसान हो जाएगा। #!/bin/bash
set -e
# Your script goes here
लॉग सत्यापित करके क्रोन की समस्या निवारण
<पी> हम लॉग फ़ाइलों का उपयोग करके क्रोन का समस्या निवारण कर सकते हैं। सभी निर्धारित कार्यों के लिए लॉग बनाए रखे जाते हैं। आप लॉग में जाँच और सत्यापन कर सकते हैं कि कोई विशिष्ट कार्य इच्छित उद्देश्य के अनुसार चला या नहीं। <पी> उबंटू/डेबियन के लिए, आप cron पा सकते हैं लॉग इन करें: /var/log/syslog
<पी> अन्य वितरणों के लिए स्थान भिन्न होता है। <पी> क्रॉन जॉब लॉग फ़ाइल इस तरह दिख सकती है: 2022-03-11 00:00:01 Task started
2022-03-11 00:00:02 Running script /path/to/script.sh
2022-03-11 00:00:03 Script completed successfully
2022-03-11 00:05:01 Task started
2022-03-11 00:05:02 Running script /path/to/script.sh
2022-03-11 00:05:03 Error: unable to connect to database
2022-03-11 00:05:03 Script exited with error code 1
2022-03-11 00:10:01 Task started
2022-03-11 00:10:02 Running script /path/to/script.sh
2022-03-11 00:10:03 Script completed successfully
निष्कर्ष
<पी> इस लेख में, हमने टर्मिनल तक पहुंचने के तरीके से शुरुआत की और फिर कुछ बुनियादी बैश कमांड चलाए। हमने यह भी अध्ययन किया कि बैश शेल क्या है। हमने संक्षेप में लूप और कंडीशनल का उपयोग करके कोड को ब्रांच करने पर विचार किया। अंत में, हमने कुछ समस्या निवारण तकनीकों के बाद क्रॉन का उपयोग करके स्क्रिप्ट को स्वचालित करने पर चर्चा की। बैश स्क्रिप्टिंग के बारे में अधिक जानने के लिए संसाधन
<पी> यदि आप बैश स्क्रिप्टिंग की दुनिया में गहराई से जाना चाहते हैं, तो मेरा सुझाव है कि आप फ्रीकोडकैंप पर लिनक्स पर 6 घंटे के इस कोर्स पर एक नजर डालें। <पी> पी> <पी> इस ट्यूटोरियल से आपने कौन सी पसंदीदा चीज़ सीखी? आप इनमें से किसी भी प्लेटफॉर्म पर मुझसे जुड़ सकते हैं। 📧 <पी> अगले ट्यूटोरियल में मिलते हैं, हैप्पी कोडिंग 😁 <पी> बैनर छवि क्रेडिट:छवि Freepik द्वारा <पी> मुफ़्त में कोड करना सीखें. फ्रीकोडकैंप के ओपन सोर्स पाठ्यक्रम ने 40,000 से अधिक लोगों को डेवलपर्स के रूप में नौकरी पाने में मदद की है। आरंभ करें