você Está lutando com a compreensão PowerShell operadores de comparação, como eq
ne
ceq
e cne
. Em caso afirmativo, continue a ler.vindo de um fundo de desenvolvimento de software, a primeira instância em que tive um “Huh?”momento foi quando eu vi pela primeira vez PowerShell os operadores de comparação eq
ceq
cne
, etc., Todas as outras línguas têm operadores de comparação, mas não muito como PowerShell. I was used to ==
and<>
.
não só a sintaxe parece completamente diferente da sua linguagem de programação típica, como também se comportam de forma diferente ao comparar colecções de valores.
é algo que realmente me pendurou ao aprender sobre PowerShell, mas agora parece que o velho adágio de cerveja; é um gosto adquirido.,vamos rever brevemente o que é um operador de comparação se não estiver familiarizado e mergulhar mais fundo nas nuances que o PowerShell introduz. Em breve, você será capaz de manejar operadores em seus scripts PowerShell sem problemas.
Como eu mencionei, todas as linguagens de programação / scripting têm operadores de comparação. No seu sentido mais básico, os operadores de comparação são necessários para avaliar como as coisas diferentes se comparam com outras coisas. Eles são usados para pegar dois objetos e ver qual é a diferença (se houver) entre esses dois objetos.,
no caso de PowerShell, os operadores também podem ser usados para encontrar elementos dentro de coleções de valores.
para este post, vou rever os operadores de igualdade e como PowerShell os usa. Estas são eq
e ne
com o seu caso-sensível homólogos ceq
e cne
. Para uma lista completa você pode saltar sobre o site Technet ou apenas usar Get-Help about_comparison_operators
na sua consola Powershell.,
PowerShell -EQ e -CEQ
Se você precisar verificar se um objeto é igual a outro objeto que você tem para usar o eq
(case-insensitive) ou ceq
(sensível a maiúsculas e minúsculas) operadores. Estes operadores testam o valor de cada entidade que você gostaria de comparar.
Quando comecei a aprender PowerShell eu faria constantemente algo assim
$string = 'Adam'if ($string = 'Adam') { 'string is equal to Adam'}
em breve você será atingido o suficiente para não fazer isso. The =
sign is an assign operator NOT a comparison operator., Você não pode usar o sinal =
para comparar um valor com outro.
a forma correcta de o fazer é definir o valor a verificar no lado esquerdo da expressão e usar o eq
operador. Aqui está um exemplo do eq
e ceq
operadores e como eles são usados.,
Notice how eq
returned a boolean True
value when comparing our variable against adam
but ceq
returned a boolean False
value? This displays the case sensitivity difference between the two operators.,
isto é bom para os valores escalares (únicos), mas você também pode encontrar todas as instâncias de valores particulares usando estes operadores também. Por exemplo, use o PowerShell operador-eq para filtrar itens em uma matriz:
Se você tem uma variável com uma coleção de valores, tal como uma matriz você pode usar eq
e ceq
para localizar todas as instâncias de valores dentro da coleção.,
Notice that it found all of the instances of the integer 9 we tried to compare against. Estou sempre a usar este método.
-NE e -CNE
No lado oposto, já ambos ne
e cne
. Eles são exatamente o oposto de eq
e ceq
mas exibem o mesmo comportamento exato apenas oposto. Não testam a igualdade, testam a desigualdade.
espero que isto dê uma boa explicação dos operadores de comparação de igualdade. Isso realmente me deixou pendurado como um novato e nunca realmente clicou para mim até que eu estava apenas batendo em submissão por mensagens de erro. Espero que este post previna a mesma batida para baixo que eu recebi.