bash - मी ी२ प्राइस इन इंडिया फ्लिपकार्ट



गिरावट के साथ मामले स्विच करें? (4)

"या" के लिए लंबवत बार ( | ) का उपयोग करें।

case "$C" in
"1")
    do_this()
    ;;
"2" | "3")
    do_what_you_are_supposed_to_do()
    ;;
*)
    do_nothing()
    ;;
esac

https://ffff65535.com

मैं बैश (आदर्श केस-असंवेदनशील) में गिरावट के मामलों के साथ स्विच स्टेटमेंट के सही वाक्यविन्यास की तलाश में हूं। PHP में मैं इसे इस तरह प्रोग्राम करूंगा:

switch($c) {
    case 1:
        do_this();
        break;
     case 2:
     case 3:
        do_what_you_are_supposed_to_do();
        break;
     default:
        do_nothing(); 
}

मैं बैश में वही चाहता हूं:

case "$C" in
    "1")
        do_this()
        ;;
    "2")
    "3")
        do_what_you_are_supposed_to_do()
        ;;
    *)
        do_nothing();
        ;; 
esac

यह किसी भी तरह से काम नहीं करता है: फ़ंक्शन do_what_you_are_supposed_to_do() को निकाल दिया जाना चाहिए जब $ C 2 या 3 हो।


इसे इस्तेमाल करे:

case $VAR in
normal)
    echo "This doesn't do fallthrough"
    ;;
special)
    echo -n "This does "
    ;&
fallthrough)
    echo "fall-through"
    ;;
esac

हालिया bash संस्करणों का उपयोग करके गिरावट के माध्यम से अनुमति देता है ;& इसके विपरीत ;; : वे केस चेक को फिर से शुरू करने की अनुमति भी देते हैं ;;& वहां।

for n in 4 14 24 34
do
  echo -n "$n = "
  case "$n" in
   3? )
     echo -n thirty-
     ;;&   #resume (to find ?4 later )
   "24" )
     echo -n twenty-
     ;&   #fallthru
   "4" | ?4)
     echo -n four 
     ;;&  # resume ( to find teen where needed )
   "14" )
     echo -n teen
  esac
  echo 
done

नमूना उत्पादन

4 = four
14 = fourteen
24 = twenty-four
34 = thirty-four

  • जब तक आप उन्हें परिभाषित नहीं करना चाहते हैं तब तक फ़ैश नामों के पीछे () उपयोग न करें।
  • 2 या 3 मैच के मामले में [23] उपयोग करें
  • स्थैतिक स्ट्रिंग के मामलों को '' बजाय '' जोड़ा जाना चाहिए

यदि "" में संलग्न है, तो दुभाषिया (अनिवार्य रूप से) मेल खाने से पहले मूल्य में संभावित चर का विस्तार करने का प्रयास करता है।

case "$C" in
'1')
    do_this
    ;;
[23])
    do_what_you_are_supposed_to_do
    ;;
*)
    do_nothing
    ;;
esac

असंवेदनशील मिलान के मामले में, आप चरित्र वर्गों का उपयोग कर सकते हैं (जैसे [23] ):

case "$C" in

# will match C='Abra' and C='abra'
[Aa]'bra')
    do_mysterious_things
    ;;

# will match all letter cases at any char like `abra`, `ABRA` or `AbRa`
[Aa][Bb][Rr][Aa])
    do_wild_mysterious_things
    ;;

esac

लेकिन abra ने कभी भी हिट नहीं किया क्योंकि यह पहले मामले से मेल खाएगा।

यदि आवश्यक हो, तो आप छोड़ सकते हैं ;; पहले मामले में भी निम्नलिखित मामलों में मैचों के लिए परीक्षण जारी रखने के लिए। ( ;; esac करने के लिए कूदता है)





bash