2016-10-12 1 views
2

Есть ли более простой способ указать условие -or? Например, if ($returnValue -eq 0 -or $returnValue -eq 5). Я бы предпочел написать что-то вроде if ($returnValue -eq 0 -or 5), чтобы проверить два возможных значения $ returnValue. Конечно, это делает что-то еще. Хорошо, просто подумал о принуждении значения к символьному типу с использованием регулярного выражения: if ($returnValue -match '0|5') Итак, теперь, когда я ответил на мой вопрос, какие-либо другие идеи?Простой синергетический синтаксис PowerShell OR

+1

Упрощенный или более тупой? –

ответ

4

Я хотел бы использовать -contains или -in где это уместно:

if ((0,5) -contains $returnValue) 

или

if ($returnValue -in (0,5)) 

-in был добавлен в PowerShell v3.

Я сильно препятствую регулярному выражению «решение», потому что он может иметь непреднамеренные побочные эффекты и уменьшает ясность. Например, 51 -match '0|5' - $true.

Рассматривает только форматирование if заявления на нескольких строках:

if (
    $returnValue -eq 0 -or 
    $returnValue -eq 5 
) 

Хотя я до сих пор люблю -contains и -in за то, что вы пытаетесь достичь.

$validVals = @(
    0, 
    5, 
    17 
) 

if ($validVals -contains $returnVal) { 
    # ... 
} 

if ($returnVal -in $validVals) { 
    # ... 
} 
+0

Я согласен с тем, что решение регулярного выражения не подходит для этого. Благодарю. – Roman