क्विज: बैश और शेल महारत
क्या आप कंप्यूटरों से बात कर सकते हैं? ठीक‑ठाक?
इन 16 प्रश्नों के साथ अपनी Bash स्क्रिप्टिंग क्षमताओं को परखें!
वेरिएबल्स, लूप्स, कंडीशनल्स, स्ट्रिंग मैनिपुलेशन, फ़ंक्शन्स और बेसिक‑से‑ट्रिकी सिंटैक्स गॉटचेज़ को कवर करते हुए।
अपनी शेल स्क्रिप्टिंग कौशल को तेज़ (या साबित) करें!
Bash में वेरिएबल्स कैसे परिभाषित किए जाते हैं?
Bash में वेरिएबल्स = चिह्न के आसपास स्पेस के बिना घोषित किए जाते हैं। उदाहरण के लिए:
name=Aliceयह name वेरिएबल को मान "Alice" असाइन करता है।
नोट: $name का उपयोग reference या वेरिएबल का मान पढ़ने के लिए किया जाता है।
स्पेस जोड़ने से शेल कमांड को चलाने वाले प्रोग्राम के रूप में समझता है, जो वेरिएबल सेट करते समय आप नहीं चाहते।
साथ ही, Bash केस-सेंसिटिव है, इसलिए name, NAME और Name अलग वेरिएबल हैं।
अंत में, वेरिएबल के नाम में स्पेस या डैश (-) नहीं हो सकते। अंडरस्कोर (_) या camelCase का उपयोग करें।
It's 🔨 Time! को क्या प्रिंट करेगा?
मैं जानता हूँ। यह पागलपन है कि एस्केपिंग कितनी जल्दी स्ट्रिंग्स को समझना कठिन बना देती है। सोचिए Bash स्ट्रिंग्स में अन्य भाषाओं को एस्केप करना - सभी कोट्स, अपॉस्ट्रोफ़ और $ सिंबल जो आपको परेशान कर देते हैं। 🫠
Bash की सिंगल-कोटेड स्ट्रिंग के भीतर सिंगल कोट नहीं आ सकता, बैकस्लैश के साथ भी नहीं। पहले उद्धृत भाग बंद करें, उसके बाहर एस्केप किया हुआ कोट लिखें, फिर उद्धृत भाग दोबारा खोलें। क्लोज‑कोट, एस्केप्ड‑कोट, री‑ओपन‑कोट सीक्वेंस ('\'') आउटपुट देता है:
It's 🔨 Time!ऐसे और भी तरीके हैं, लेकिन यह सबसे आम है।
अब, यह क्या प्रिंट करेगा?
price="$100"echo "Cost: $price"संख्यात्मक वेरिएबल्स का विशेष अर्थ होता है। इस मामले में, $1 एक विशेष वेरिएबल है जो स्क्रिप्ट या फ़ंक्शन को पास किए गए पहले आर्ग्यूमेंट को रखता है।
चूँकि हम स्क्रिप्ट को REPL में चला रहे हैं, कोई आर्ग्यूमेंट नहीं है, इसलिए $1 खाली है। शेष टेक्स्ट 00 जैसा है वैसा ही प्रिंट होता है।
एक लिटरल $ कैरेक्टर प्रिंट करने के लिए, सिंगल कोट्स का उपयोग करें, या बैकस्लैश (\) से एस्केप करें:
price="\$100"echo "Cost: $price"Bash में किसी वेरिएबल की लंबाई कैसे प्राप्त करें?
${#username} सिंटैक्स username की लंबाई लौटाता है।
उदाहरण के लिए:
username="@justsml"echo ${#username} # => 8wc काम कर सकता है, लेकिन यह तकनीकी रूप से Bash का हिस्सा नहीं है।
यूटिलिटी wc एक पुराना अंदरूनी मज़ाक है जिसका मतलब “वॉटर क्लोसेट” यानी टॉयलेट है।
मज़ाक कर रहा हूँ! क्या कोई इसे पढ़ता है?
असल में wc Posix (और AT&T Unix दिनों) से आया एक प्राचीन कमांड है। यह “word count” का संक्षिप्त रूप है और फ़ाइल या इनपुट स्ट्रीम में लाइनों, शब्दों और अक्षरों की गिनती कर सकता है।
Bash में स्ट्रिंग्स की तुलना कैसे करें?
cat1="Rosie"cat2="Sunflower"if [ "$cat1" === "$cat2" ]; then echo "Same cat"else echo "Different cats"fiएक और परीक्षण सिंटैक्स त्रुटि!
क्या आपने अमान्य === ऑपरेटर को पकड़ा?
आप शायद जावास्क्रिप्ट के बारे में सोच रहे थे…
[ ... ] के साथ, Bash एक डायग्नोस्टिक रिपोर्ट करता है और शर्त गलत होती है, इसलिए else शाखा Different cats प्रिंट करती है। Bash में, समानता तुलना के लिए = या == का उपयोग करें।
इस स्क्रिप्ट का आउटपुट क्या होगा?
function greet () { echo "$1"}greet Hi DanBash में फ़ंक्शन तर्क ले सकते हैं। $1 वेरिएबल फ़ंक्शन को पास किए गए पहले तर्क को रखता है.
याद रखें, $0 स्क्रिप्ट का नाम है, $1 पहला तर्क, $2 दूसरा, आदि. स्पेस तर्कों को अलग करता है। इसलिए, greet Hi Dan पहला तर्क "Hi" पास करता है। "Hi Dan" को एक ही तर्क के रूप में पास करने के लिए, आपको इसे कोट करना होगा: greet "Hi Dan".
Bash में गणित कैसे काम करता है?
Bash में (( )) सिंटैक्स पूर्णांक गणित करता है।
इसे सरल गणनाओं के लिए उपयोग किया जा सकता है:
((result = 2 + 2))echo $result # => 4या शर्तीय अभिव्यक्तियों के लिए:
if (( 2 > 1 )); then echo "2 is greater than 1"fiफ़्लोटिंग‑पॉइंट अंकगणित के लिए, bc या awk का उपयोग करने पर विचार करें।
इनमें से कौन सा सही ढंग से 10 और 0.5 को गुणा करता है, और 5 प्रिंट करता है?
इस स्क्रिप्ट में : क्या करता है?
rosie="Bad cat, good cat"echo ${rosie:9}${var:offset} सिंटैक्स offset से शुरू होने वाली सबस्ट्रिंग निकालता है। यहाँ, आउटपुट है:
good catविशिष्ट लंबाई की सबस्ट्रिंग निकालने के लिए, ${var:offset:length} का उपयोग करें।
स्ट्रिंग के अंत से निकालने के लिए, ${var: -offset} का उपयोग करें। (ध्यान दें - से पहले स्पेस है!)
क्या मेरी Bash क्विज़ ने आपको बिखेर दिया?
नीचे कमेंट्स में बताइए!
आगे पढ़ें
इन संसाधनों के साथ अपनी Bash कौशल को ताज़ा करें:
- Bash Guide
- BashFAQ
- ShellCheck
- Bash Academy
- Bash Scripting Tutorial
- Bash Reference Manual
- Bash Hackers Wiki
- Bash Guide for Beginners
- Bash Reference Card
