शेल एक इंटरफेस है जिसका उपयोग करके प्रोग्रामर कमांड एक्जीक्यूट कर सकता है और ऑपरेटिंग सिस्टम के साथ सीधे इंटरैक्ट कर सकता है। शेल स्क्रिप्टिंग वे कमांड्स देना है जिन्हें शेल एक्जीक्यूट कर सकता है।
शेल में भी वेरिएबल्स और ऑपरेटर्स होते हैं जिनका उपयोग इन वेरिएबल्स को मैनिपुलेट करने के लिए किया जाता है। शेल स्क्रिप्टिंग में 5 बेसिक ऑपरेटर्स होते हैं।
- अंकगणितीय ऑपरेटर्स
- संबंधपरक ऑपरेटर्स
- बूलियन ऑपरेटर्स
- बिटवाइज़ ऑपरेटर्स
- फाइल टेस्ट ऑपरेटर्स
अंकगणितीय ऑपरेटर्स
शेल स्क्रिप्टिंग में अंकगणितीय ऑपरेटर्स का उपयोग सामान्य अंकगणितीय/गणितीय ऑपरेशन्स करने के लिए किया जाता है। शेल स्क्रिप्टिंग में 7 वैध अंकगणितीय ऑपरेटर्स होते हैं:
जोड़ (+) का उपयोग दो ऑपरेंड्स (वेरिएबल्स) को जोड़ने के लिए किया जाता है।
घटाव (-) का उपयोग शेल स्क्रिप्टिंग में दो वेरिएबल्स (ऑपरेंड्स) को घटाने के लिए किया जाता है।
गुणा (*) का उपयोग शेल स्क्रिप्टिंग में दो वेरिएबल्स (ऑपरेंड्स) को गुणा करने के लिए किया जाता है।
भाग (/) का उपयोग शेल स्क्रिप्टिंग में दो वेरिएबल्स (ऑपरेंड्स) को विभाजित करने के लिए किया जाता है।
मॉड्युलस (%) का उपयोग शेल स्क्रिप्टिंग में ऑपरेंड्स के विभाजन पर शेषफल खोजने के लिए किया जाता है।
इन्क्रीमेंट ऑपरेटर (++) का उपयोग ऑपरेटर के वर्तमान मान में एक जोड़ने के लिए किया जाता है।
डिक्रीमेंट ऑपरेटर (--) का उपयोग ऑपरेटर के वर्तमान मान से एक घटाने के लिए किया जाता है।
उदाहरण
शेल स्क्रिप्टिंग में अंकगणितीय ऑपरेटर के कार्यान्वयन को दिखाने के लिए:
a = 32 b = 23 add = $((a + b)) echo sum of a and b is $add sub = $((a - b)) echo Subtraction of a and b is $sub mul = $((a * b)) echo product of a and b is $mul div = $((a / b)) echo division of a and b is $div mod = $((a % b)) echo remainder when a is divided b is $mod ((++a)) echo Increment operator when applied on "a" results into a = $a ((--b)) echo Decrement operator when applied on "b" results into b = $b
आउटपुट
sum of a and b is 55 Subtraction of a and b is 9 product of a and b is 736 division of a and b is 1 remainder when a is divided b is 9 Increment operator when applied on a results into a = 33 Decrement operator when applied on b results into b = 24
संबंधपरक ऑपरेटर
शेल स्क्रिप्टिंग में संबंधपरक ऑपरेटर ऑपरेंड्स के बीच संबंधों को परिभाषित करता है। इनका रिटर्न वैल्यू ऑपरेटर और ऑपरेंड्स के आधार पर या तो ट्रू या फॉल्स होता है। शेल स्क्रिप्टिंग में 6 प्रकार के वैध संबंधपरक ऑपरेटर्स होते हैं:
== ऑपरेटर वह ऑपरेटर है जो दो ऑपरेटर्स के मानों को बराबर करता है। यह ट्रू लौटाता है यदि मान बराबर हैं और अन्यथा फॉल्स लौटाता है।
!= ऑपरेटर वह ऑपरेटर है जो दो ऑपरेटर्स के मानों को बराबर करता है और उनकी असमानता की जांच करता है। यह ट्रू लौटाता है यदि मान बराबर नहीं हैं और अन्यथा फॉल्स लौटाता है।
< ऑपरेटर दो ऑपरेटर्स के मानों की तुलना करने वाला कम-से-कम ऑपरेटर है। यदि पहले ऑपरेंड का मान दूसरे से छोटा है तो ऑपरेटर ट्रू लौटाता है अन्यथा फॉल्स।
<= ऑपरेटर कम-से-कम-या-बराबर ऑपरेटर है जो दो ऑपरेटर्स के मानों की तुलना करता है। यदि पहले ऑपरेंड का मान दूसरे से छोटा या बराबर है तो ऑपरेटर ट्रू लौटाता है अन्यथा फॉल्स।
> ऑपरेटर दो ऑपरेटर्स के मानों की तुलना करने वाला अधिक-से-अधिक ऑपरेटर है। यदि पहले ऑपरेंड का मान दूसरे से बड़ा है तो ऑपरेटर ट्रू लौटाता है अन्यथा फॉल्स।
>= ऑपरेटर अधिक-से-अधिक-या-बराबर ऑपरेटर है जो दो ऑपरेटर्स के मानों की तुलना करता है। यदि पहले ऑपरेंड का मान दूसरे से बड़ा या बराबर है तो ऑपरेटर ट्रू लौटाता है अन्यथा फॉल्स।
उदाहरण
a = 32
b = 67
if(( $a==$b ))
then
echo a is equal to b.
else
echo a is not equal to b.
fi
if(( $a!=$b ))
then
echo a is not equal to b.
else
echo a is equal to b.
fi
if(( $a<$b ))
then
echo a is less than b.
else
echo a is not less than b.
fi
if(( $a<=$b ))
then
echo a is less than or equal to b.
else
echo a is not less than or equal to b.
fi
if(( $a>$b ))
then
echo a is greater than b.
else
echo a is not greater than b.
fi
if(( $a>=$b ))
then
echo a is greater than or equal to b.
else
echo a is not greater than or equal to b.
fi आउटपुट
a is not equal to b. a is not equal to b. a is less than b. a is less than or equal to b. a is not greater than b. a is not greater than or equal to b.
बूलियन ऑपरेटर
बूलियन ऑपरेटर को लॉजिकल ऑपरेटर्स के रूप में भी जाना जाता है जिनका उपयोग शेल स्क्रिप्टिंग में लॉजिकल ऑपरेशन्स करने के लिए किया जाता है। शेल स्क्रिप्टिंग में 3 प्रकार के वैध लॉजिकल ऑपरेटर्स होते हैं:
लॉजिकल AND (&&) बूलियन मान के लॉजिकल AND की गणना करता है। यह ट्रू लौटाता है यदि दोनों ऑपरेंड्स ट्रू हैं, अन्यथा फॉल्स।
लॉजिकल OR (||) बूलियन ऑपरेंड्स के लॉजिकल OR ऑपरेशन की गणना करता है। यह फॉल्स लौटाता है यदि दोनों ऑपरेंड्स फॉल्स हैं अन्यथा ट्रू।
लॉजिकल नॉट इक्वल टू (!) पास किए गए सिंगल ऑपरेटर के निगेशन की गणना करता है। यदि ऑपरेंड का मान ट्रू है तो यह फॉल्स लौटाता है अन्यथा ट्रू।
उदाहरण
a = true
b = false
if(( $a == "true" & $b == "true" ))
then
echo Both are true.
else
echo Both are not true.
fi
if(( $a == "true" || $b == "true" ))
then
echo Atleast one of them is true.
else
echo None of them is true.
fi
if(( ! $a == "true" ))
then
echo "a" was intially false.
else
echo "a" was intially true.
fi आउटपुट
Both are not true. Atleast one of them is true a was intially true.
बिटवाइज़ ऑपरेटर वे ऑपरेटर्स हैं जो बिट वेरिएबल्स पर बिटवाइज़ ऑपरेशन्स करते हैं। शेल स्क्रिप्टिंग में 6 प्रकार के बिटवाइज़ ऑपरेटर्स होते हैं:
बिटवाइज़ AND (&) वह ऑपरेटर है जो ऑपरेंड्स के बिट्स पर बाइनरी AND ऑपरेशन करता है यानी पहले वेरिएबल के प्रत्येक बिट को दूसरे ऑपरेटर के संबंधित बिट के साथ ऑपरेट किया जाता है।
बिटवाइज़ OR (|) वह ऑपरेटर है जो ऑपरेंड्स के बिट्स पर बाइनरी OR ऑपरेशन करता है यानी पहले वेरिएबल के प्रत्येक बिट को दूसरे ऑपरेटर के संबंधित बिट के साथ ऑपरेट किया जाता है।
बिटवाइज़ XOR (^) वह ऑपरेटर है जो ऑपरेंड्स के बिट्स पर बाइनरी XOR ऑपरेशन करता है यानी पहले वेरिएबल के प्रत्येक बिट को दूसरे ऑपरेटर के संबंधित बिट के साथ ऑपरेट किया जाता है।
बिटवाइज़ कॉम्प्लीमेंट (~) वह ऑपरेटर है जो ऑपरेंड्स के बिट्स पर बाइनरी NOT ऑपरेशन करता है यानी पहले वेरिएबल के प्रत्येक बिट को दूसरे ऑपरेटर के संबंधित बिट के साथ ऑपरेट किया जाता है।
बिटवाइज़ लेफ्ट शिफ्ट (<<) वह ऑपरेटर है जो ऑपरेंड के बिट्स को ऑपरेटर के दाएं निर्दिष्ट n बार बाएं शिफ्ट करता है।
बिटवाइज़ राइट शिफ्ट (>>) वह ऑपरेटर है जो ऑपरेंड के बिट्स को ऑपरेटर के दाएं निर्दिष्ट n बार दाएं शिफ्ट करता है।
उदाहरण
a = 14 b = 67 bitwiseAND=$(( a&b )) echo Bitwise AND of a and b is $bitwiseAND bitwiseOR=$(( a|b )) echo Bitwise OR of a and b is $bitwiseOR bitwiseXOR=$(( a^b )) echo Bitwise XOR of a and b is $bitwiseXOR bitiwiseComplement=$(( ~a )) echo Bitwise Compliment of a is $bitiwiseComplement leftshift=$(( a<<1 )) echo Left Shift of a is $leftshift rightshift=$(( b>>1 )) echo Right Shift of b is $rightshift
आउटपुट
Bitwise AND of a and b is 2 Bitwise OR of a and b is 79 Bitwise XOR of a and b is 77 Bitwise Compliment of a is -15 Left Shift of a is 28 Right Shift of b is 33
फाइल टेस्ट ऑपरेटर
फाइल टेस्ट ऑपरेटर्स का उपयोग फाइल के विशेष गुणों का परीक्षण करने के लिए किया जाता है। कुछ फाइल टेस्ट ऑपरेटर्स हैं:
-b ऑपरेटर का उपयोग यह जांचने के लिए किया जाता है कि निर्दिष्ट फाइल ब्लॉक स्पेशल फाइल है या नहीं। यदि फाइल ब्लॉक स्पेशल फाइल है तो फंक्शन ट्रू लौटाता है अन्यथा फॉल्स।
-s ऑपरेटर वह ऑपरेटर है जो दी गई फाइल के आकार की जांच करता है। यदि फाइल का आकार 0 से अधिक है, तो यह ट्रू लौटाता है अन्यथा फॉल्स।
-r ऑपरेटर वे ऑपरेटर्स हैं जो जांचते हैं कि फाइल कंटेंट पढ़ने की एक्सेस दी गई है या नहीं। यदि रीड एक्सेस दी गई है तो यह ट्रू लौटाता है अन्यथा फॉल्स।
-w ऑपरेटर वे ऑपरेटर्स हैं जो जांचते हैं कि फाइल में लिखने की एक्सेस दी गई है या नहीं। यदि राइट एक्सेस दी गई है तो यह ट्रू लौटाता है अन्यथा फॉल्स।
-x ऑपरेटर वे ऑपरेटर्स हैं जो जांचते हैं कि फाइल को एक्जीक्यूट करने की एक्सेस दी गई है या नहीं। यदि एक्जीक्यूशन एक्सेस दी गई है तो यह ट्रू लौटाता है अन्यथा फॉल्स।