CASE स्टेटमेंट्स

Bash Scripting परिचय

Alex Scriven

Data Scientist

CASE स्टेटमेंट्स की ज़रूरत

जब कई या जटिल कंडीशन्स हों, तो CASE स्टेटमेंट्स अक्सर IF से बेहतर होते हैं।

मान लीजिए आप ये कंडीशन्स और एक्शन्स टेस्ट करना चाहते हैं:

  • अगर किसी फाइल में sydney हो तो उसे /sydney डायरेक्टरी में मूव करें
  • अगर किसी फाइल में melbourne या brisbane हो तो उसे डिलीट करें
  • अगर किसी फाइल में canberra हो तो उसका नाम IMPORTANT_filename कर दें, जहाँ filename ओरिजिनल नाम था
Bash Scripting परिचय

एक जटिल IF स्टेटमेंट

आप कई IF स्टेटमेंट्स ऐसे लिख सकते हैं:

  • यह कोड कंडीशनल के लिए पहले ARGV आर्ग्युमेंट पर grep चलाता है।
if grep -q 'sydney' $1; then
    mv $1 sydney/
fi
if grep -q 'melbourne|brisbane' $1; then
    rm $1
fi
if grep -q 'canberra' $1; then
    mv $1 "IMPORTANT_$1"
fi
  • काफ़ी जटिल और दोहराव-सा लग रहा है, है ना?
Bash Scripting परिचय

CASE स्टेटमेंट बनाएँ

  • पहले चुनें कि किस वैरिएबल या स्ट्रिंग से मैच करना है
    • यहाँ आप शेल-विदिन-ए-शेल भी कॉल कर सकते हैं!
  • जितने चाहें मैच और एक्शन जोड़ें।
    • आप PATTERN के लिए regex इस्तेमाल कर सकते हैं। जैसे 'Air' मतलब 'Air से शुरू', या `hat*` मतलब 'hat शामिल है'।
  • पैटर्न और चलने वाले कोड को क्लोज-पैरेंथेसिस से अलग करें और कमांड्स को डबल सेमीकोलन से खत्म करें

बेसिक CASE स्टेटमेंट फॉर्मेट:

case 'STRINGVAR' in

PATTERN1) COMMAND1;; PATTERN2) COMMAND2;;
Bash Scripting परिचय

CASE स्टेटमेंट बनाएँ

 

  • *) DEFAULT COMMAND;;

    • आमतौर पर (पर ज़रूरी नहीं) अंत में एक डिफ़ॉल्ट कमांड रखते हैं, जो तब चले जब कोई और पैटर्न मैच न हो।
  • esac आखिर में फिनिशिंग वर्ड 'esac' होता है

    • यह 'case' का उल्टा स्पेलिंग है!

बेसिक CASE स्टेटमेंट फॉर्मेट:

case 'STRING' in
  PATTERN1)
  COMMAND1;;
  PATTERN2)
  COMMAND2;;

*) DEFAULT COMMAND;;
esac
Bash Scripting परिचय

IF से CASE तक

हमारा पुराना IF स्टेटमेंट:

if grep -q 'sydney' $1; then
    mv $1 sydney/
fi

if grep -q 'melbourne|brisbane' $1; then
    rm $1
fi

if grep -q 'canberra' $1; then
    mv $1 "IMPORTANT_$1"
fi

हमारा नया CASE स्टेटमेंट:

case $(cat $1) in

*sydney*) mv $1 sydney/ ;; *melbourne*|*brisbane*) rm $1 ;; *canberra*) mv $1 "IMPORTANT_$1" ;;
*) echo "No cities found" ;; esac
Bash Scripting परिचय

अभ्यास करते हैं!

Bash Scripting परिचय

Preparing Video For Download...