একাধিক মান সহ পাওয়ারশেল স্যুইচ স্টেটমেন্ট


11

যে কেউ জানেন কীভাবে আমি নীচের উদাহরণের মতো একাধিক সম্ভাব্য মানগুলির সাথে একটি স্যুইচ বিবৃতি পেতে পারি?

switch ($myNumber) {
   1 3 5 7 9 { write-host "Odd" }
   2 4 6 8 10 {write-host "Even" }
}

ভিবিএস স্ক্রিপ্টে সহজ ব্যবহার করা হত, তাই আমি নিশ্চিত যে আমি সাদামাটা কিছু মিস করছি।

যেমন ভিবিএস স্ক্রিপ্টে

Select Case myNumber 
   Case 1,3,5,7,9
      MsgBox "Odd"
   Case 2,4,6,8,10
      MsgBox "Even"
End Select

অগ্রিম চিয়ারস,

বেন

উত্তর:


11
$myNumber = 3
$arrA = 1, 3, 5, 7, 9
$arrB = 2, 4, 6, 8, 10
switch ($myNumber) { 
    {$arrA -contains $_} { write-host "Odd" } 
    {$arrB -contains $_} { write-host "Even" }
}

কনটেন্টগুলির পরিবর্তে +1 ব্যবহার আরও ভাল is
বার্নি হোয়াইট

11

আপনার ক্ষেত্রে আপনি সহজভাবে ব্যবহার করতে পারেন

switch ($myNumber) {
  { $_ % 2 -eq 1 } { "Odd" }
  { $_ % 2 -eq 0 } { "Even" }
}

আপনি সেখানে ভিবিতে যা করতে পারেন তা মডেল করার প্রকৃত প্রচেষ্টা সম্ভবত এমন কিছু হতে পারে

switch ($myNumber) {
  { 1,3,5,7,9  -contains $_ } { "Odd" }
  { 2,4,6,8,10 -contains $_ } { "Even" }
}

আমি এটি আরও ভাল পছন্দ করি কারণ এটি প্রচলিত সুইচ স্টেটমেন্টগুলির সাথে বেশি পরিচিত more
মার্ক হেন্ডারসন

0

সম্পূর্ণতার জন্য এটি যুক্ত করা হচ্ছে ...

উপরের ভিবি স্ক্রিপ্টের নিকটতম পাওয়ারশেল কোডটি হ'ল:

PS C:\> switch (1) {  
  {$_ -eq 1 -or $_ -eq 3 -or $_ -eq 5 -or $_ -eq 7 -or $_ -eq 9} { "Odd"}
  {$_ -eq 2 -or $_ -eq 4 -or $_ -eq 6 -or $_ -eq 8 -or $_ -eq 10} { "Even"}
}
Odd

PS C:\VSProjects\Virtus\App_VM> switch (2) {  
  {$_ -eq 1 -or $_ -eq 3 -or $_ -eq 5 -or $_ -eq 7 -or $_ -eq 9} { "Odd"}
  {$_ -eq 2 -or $_ -eq 4 -or $_ -eq 6 -or $_ -eq 8 -or $_ -eq 10} { "Even"}
}
Even

কারণ ভিবি স্ক্রিপ্ট সিলেক্ট কেস একটি ওআর মাধ্যমে পরিচালনা করে

Select Case testexpression
   [Case expressionlist-n
      [statements-n]] . . .
   [Case Else
      [elsestatements-n]]
End Select

"যদি টেস্টে এক্সপ্রেশন কোনও কেস এক্সপ্রেশনলিস্ট এক্সপ্রেশনের সাথে মিলে যায় তবে কেস ক্লজ অনুসরণ করে পরবর্তী বিবৃতিগুলি পরবর্তী কেস ক্লজ অবধি কার্যকর করা হয় ..." কেস স্টেটমেন্ট নির্বাচন করুন

আকর্ষণীয় জিনিস যা আমি বের করতে সক্ষম হইনি তা হ'ল এই ফলাফল:

PS C:\> switch (1) {  
  {1 -or 3 -or 5 -or 7 -or 9} { "Odd"}
  {2 -or 4 -or 6 -or 8 -or 10} { "Even"}
}
Odd
Even 

0

switch ($myNumber) {
{$_ -in 1, 3, 5, 7, 9} { write-host "Odd" }
{$_ -in 2, 4, 6, 8, 10} {write-host "Even" }
}


-1

রেজেেক্স ব্যবহারের সহজ বিকল্পের জন্য এটি কীভাবে ?

switch -regex ($myNumber)
{
   "^[13579]$"     { Write-Host "Odd" }
   "^([2468]|10)$" { Write-Host "Even" }
   default         { Write-Host "Other" }
}

1
|10অংশ জন্য -1 ।
হরিণ হান্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.