खोज…


परिचय

एक स्विच स्टेटमेंट एक वैरिएबल को मानों की सूची के खिलाफ समानता के लिए परीक्षण करने की अनुमति देता है। प्रत्येक मान को एक केस कहा जाता है, और स्विच किए जा रहे चर को प्रत्येक स्विच केस के लिए जांचा जाता है। यह आपको एक स्क्रिप्ट लिखने में सक्षम बनाता है जो विकल्पों की एक श्रृंखला से चुन सकता है, लेकिन यदि आपको बयानों की एक लंबी श्रृंखला लिखने की आवश्यकता के बिना।

टिप्पणियों

यह विषय स्क्रिप्ट के प्रवाह को ब्रांच करने के लिए उपयोग किए जाने वाले स्विच स्टेटमेंट का दस्तावेजीकरण कर रहा है। इसे स्विच मापदंडों के साथ भ्रमित न करें जो बूलियन झंडे के रूप में उपयोग किए जाते हैं।

सरल स्विच

स्विच स्टेटमेंट एकल परीक्षण मूल्य की कई स्थितियों से तुलना करते हैं, और सफल तुलना के लिए किसी भी संबद्ध क्रिया को करते हैं। यह कई मैचों / कार्यों में परिणाम कर सकता है।

निम्नलिखित स्विच को देखते हुए ...

switch($myValue)
{
    'First Condition'    { 'First Action' }
    'Second Condition'   { 'Second Action' }
}

अगर 'First Condition' $myValue 'First Condition' रूप में सेट किया जाता है, तो 'First Action' आउटपुट होगा।

यदि $myValue को 'Second Condition' रूप में सेट किया जाता है तो 'Section Action' आउटपुट होगा।

कुछ भी आउटपुट नहीं होगा यदि $myValue दोनों स्थितियों से मेल नहीं खाता है।

Regex Parameter के साथ स्विच स्टेटमेंट

-Regex पैरामीटर स्टेटमेंट को शर्तों के विरुद्ध नियमित अभिव्यक्ति करने के लिए स्विच की अनुमति देता है।

उदाहरण:

switch -Regex ('Condition')
{ 
  'Con\D+ion'    {'One or more non-digits'}
  'Conditio*$'   {'Zero or more "o"'} 
  'C.ndition'    {'Any single char.'}  
  '^C\w+ition$'  {'Anchors and one or more word chars.'} 
  'Test'         {'No match'} 
}

आउटपुट:

One or more non-digits
Any single char.
Anchors and one or more word chars.

ब्रेक के साथ सरल स्विच

सभी स्थितियों का मूल्यांकन करने से पहले बयान से बाहर निकलने के लिए स्विच स्टेटमेंट में break कीवर्ड का उपयोग किया जा सकता है।

उदाहरण:

switch('Condition')
{
  'Condition'
  {
    'First Action'
  }
  'Condition'
  {
    'Second Action'
    break
  }
  'Condition'
  {
    'Third Action'
  }
}

आउटपुट:

First Action
Second Action

दूसरी क्रिया में break कीवर्ड के कारण, तीसरी स्थिति का मूल्यांकन नहीं किया जाता है।

वाइल्डकार्ड पैरामीटर के साथ स्विच स्टेटमेंट

-Wildcard पैरामीटर स्विच स्टेटमेंट को शर्तों के विरुद्ध वाइल्डकार्ड मिलान करने की अनुमति देता है।

उदाहरण:

switch -Wildcard ('Condition')
{ 
    'Condition'           {'Normal match'}
    'Condit*'             {'Zero or more wildcard chars.'} 
    'C[aoc]ndit[f-l]on'   {'Range and set of chars.'}  
    'C?ndition'           {'Single char. wildcard'}
    'Test*'               {'No match'} 
}

आउटपुट:

Normal match
Zero or more wildcard chars.
Range and set of chars.
Single char. wildcard

सटीक पैरामीटर के साथ स्टेटमेंट स्विच करें

-Exact पैरामीटर स्ट्रिंग-स्थितियों के विरुद्ध सटीक, केस-असंवेदनशील मिलान करने के लिए स्विच स्टेटमेंट को लागू करता है।

उदाहरण:

switch -Exact ('Condition')
{ 
  'condition'   {'First Action'}
  'Condition'   {'Second Action'} 
  'conditioN'   {'Third Action'}  
  '^*ondition$' {'Fourth Action'} 
  'Conditio*'   {'Fifth Action'} 
}

आउटपुट:

First Action
Second Action
Third Action

तीसरी क्रियाओं के माध्यम से पहले को क्रियान्वित किया जाता है क्योंकि उनकी संबंधित स्थितियां इनपुट से मेल खाती हैं। चौथी और पांचवीं परिस्थितियों में रेगेक्स और वाइल्डकार्ड के तार मेल खाने में विफल हो जाते हैं।

ध्यान दें कि यदि नियमित अभिव्यक्ति मिलान किया जा रहा है तो चौथी स्थिति भी इनपुट स्ट्रिंग से मेल खाएगी, लेकिन इस मामले में इसे अनदेखा कर दिया गया क्योंकि यह नहीं है।

CaseSensitive पैरामीटर के साथ स्विच स्टेटमेंट

शर्तों के खिलाफ सटीक, मामले के प्रति संवेदनशील मिलान करने के लिए -CaseSensitive पैरामीटर स्विच स्टेटमेंट को लागू करता है।

उदाहरण:

switch -CaseSensitive ('Condition')
{ 
  'condition'   {'First Action'}
  'Condition'   {'Second Action'} 
  'conditioN'   {'Third Action'}  
}

आउटपुट:

Second Action

दूसरी क्रिया निष्पादित एकमात्र क्रिया है क्योंकि यह एकमात्र ऐसी स्थिति है जो केस-सेंसिटिविटी के लिए लेखांकन करते समय स्ट्रिंग 'Condition' बिल्कुल मेल खाती है।

फ़ाइल पैरामीटर के साथ स्विच स्टेटमेंट

-file पैरामीटर स्विच स्टेटमेंट को फाइल से इनपुट प्राप्त करने की अनुमति देता है। फ़ाइल की प्रत्येक पंक्ति का मूल्यांकन स्विच स्टेटमेंट द्वारा किया जाता है।

उदाहरण फ़ाइल input.txt :

condition
test

उदाहरण स्विच स्टेटमेंट:

switch -file input.txt
{ 
  'condition' {'First Action'}
  'test'      {'Second Action'} 
  'fail'      {'Third Action'}   
}

आउटपुट:

First Action
Second Action

डिफ़ॉल्ट स्थिति के साथ सरल स्विच

Default कीवर्ड का उपयोग एक कार्रवाई को निष्पादित करने के लिए किया जाता है जब कोई अन्य स्थिति इनपुट मूल्य से मेल नहीं खाती।

उदाहरण:

switch('Condition')
{
  'Skip Condition'
  {
    'First Action'
  }
  'Skip This Condition Too'
  {
    'Second Action'
  }
  Default
  {
    'Default Action'
  }
}

आउटपुट:

Default Action

भाव के साथ स्विच स्टेटमेंट

स्थितियां भी अभिव्यक्ति हो सकती हैं:

$myInput = 0

switch($myInput) {
    # because the result of the expression, 4, 
    # does not equal our input this block should not be run.
    (2+2)  { 'True. 2 +2 = 4' }

    # because the result of the expression, 0, 
    # does equal our input this block should be run.
    (2-2) { 'True. 2-2 = 0' }

    # because our input is greater than -1 and is less than 1 
    # the expression evaluates to true and the block should be run.
    { $_ -gt -1 -and $_ -lt 1 } { 'True. Value is 0' }
}

#Output
True. 2-2 = 0
True. Value is 0


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow