Como muitas outras linguagens de programação, o PowerShell possui vários operadores de comparação. No entanto, ao contrário de outras linguagens, esses operadores de comparação podem parecer um pouco estranhos. Em vez de `==
`, você tem `eq
`. Em vez de `<>
`, você tem `ne
`. Pode ser confuso para os iniciantes. Vamos dar uma olhada no operador like do PowerShell e em outros operadores de comparação neste artigo.
Testando a Igualdade com os Operadores eq
e ceq
Para verificar se um objeto é igual a outro objeto no PowerShell, usa-se o operador eq
. O operador eq
compara objetos simples de muitos tipos, como strings, valores booleanos, inteiros, etc. Quando usado, o operador eq
retornará um valor booleano True
ou False
dependendo do resultado.
O operador -eq
precisa de dois valores para comparar. Digamos que você atribua uma string a uma variável chamada $string
. Você gostaria de comparar o valor dessa variável com o valor da string "PowerShell"
para garantir que sejam iguais.
No exemplo a seguir, você pode ver que estamos atribuindo o valor PowerShell
à variável $string
. Em seguida, usando o operador eq
, o exemplo compara o valor de $string
com a string powershell
. Bastante fácil, certo? Mas espere, eles não são realmente os mesmos.
Observe que
=
é um operador de atribuição e NÃO um operador de comparação. Você não pode usar=
para comparar um valor com outro no PowerShell.
Testando Sensibilidade a Maiúsculas e Minúsculas com o Operador ceq
No exemplo acima, observe como eq
retornou um valor booleano True
mesmo quando a string não era a exata mesma. Isso ocorre porque o operador eq
é insensível a maiúsculas e minúsculas. Para testar a igualdade sensível a maiúsculas e minúsculas, use o operador ceq
. O operador ceq
é exatamente o mesmo que eq
, com a exceção de ser sensível a maiúsculas e minúsculas.
Você pode ver um exemplo de uso do ceq
no trecho de código a seguir. Agora observe como o PowerShell identifica a diferença sensível a maiúsculas e minúsculas.
Testando Desigualdade com os Operadores ne
e cne
Assim como eq
e ceq
testam a igualdade, o PowerShell possui um par de operadores que fazem exatamente o oposto chamados ne
e cne
. Assim como seus equivalentes, esses dois operadores realizam a exata mesma operação, mas ao contrário.
Testando Itens em uma Coleção
Normalmente, os operadores eq
e ceq
são usados para valores escalares ou únicos, como strings, inteiros e valores booleanos. No entanto, esses operadores também podem encontrar instâncias de valores específicos contidos em uma coleção, como um array.
Observe no exemplo abaixo que estamos criando um array com 12 inteiros. Talvez você queira encontrar todas as instâncias nesse array que sejam iguais ao número 9. Sem problemas, use o operador eq
contra o array para retornar todas as instâncias do inteiro comparado.
Testando Coleções para Conter Valores
Já que você acabou de aprender sobre o uso do operador eq
para encontrar instâncias em arrays, vamos dar um passo adiante e introduzir os operadores de “contenção”. Esses operadores são contains
, notcontains
, in
e notin
. Eles retornam um valor booleano True
ou False
se uma coleção contém ou não uma instância.
Confira o exemplo a seguir. Neste exemplo, estamos criando um array com nove inteiros. Se você quiser uma resposta simples de Sim/Não para saber se esse array contém um determinado inteiro, você pode obter isso usando contains
ou notcontains
.
Da mesma forma, você tem os operadores in
e notin
. Esses operadores são quase idênticos a contains
e notcontains
com uma exceção: o valor a ser comparado está à esquerda em vez da direita.
Testando “Maior que” com os Operadores gt
e ge
O que acontece se precisar testar se um número (um inteiro) é maior que outro número ou talvez maior ou igual a outro número? Você usaria os operadores `gt` e `ge`. Esses operadores comparam inteiros.
Assim como os outros operadores, esses operadores retornam valores booleanos `True` ou `False` dependendo se um inteiro é maior que outro. Ambos esses operadores testam se o inteiro à esquerda é maior ou maior ou igual ao inteiro à direita.
No exemplo abaixo, você pode ver como cada um desses operadores se comporta.
Similar ao operador `eq` que permite encontrar instâncias em coleções, você pode fazer o mesmo com os operadores `ge` e `gt`. O PowerShell pesquisa cada item em uma coleção e compara cada valor com o que você forneceu. Você pode ver um ótimo exemplo disso abaixo.
Testando “menor que” com os operadores `lt` e `le`
Similar aos operadores `gt` e `ge`, os operadores `lt` e `le` executam a mesma função, porém oposta. Os operadores `lt` e `le` comparam dois valores testando se o inteiro no lado esquerdo é menor ou menor ou igual ao inteiro no lado direito.
No exemplo abaixo, a mesma funcionalidade de comparar cada valor em uma coleção se aplica exatamente igual a `gt` e `ge`.
Correspondência baseada em curingas com o Operador Like do PowerShell
Até agora, você aprendeu como fazer correspondências 1:1. Todos os operadores usados até agora compararam um valor inteiro com outro, mas o PowerShell tem mais um truque na manga. Você também pode comparar valores com base em curingas ou asteriscos.
Digamos que você conheça apenas alguns caracteres de uma string. Você não pode usar eq
porque eq
exige que você conheça a string inteira. Usando o operador like do PowerShell, você não precisa conhecer a string inteira. Para testar se um valor é like outro, você pode substituir a parte que não conhece por um curinga.
Assim como com outros operadores, essa mesma funcionalidade pode ser aplicada a coleções também.
Você pode ver um exemplo do operador like do PowerShell e seu “irmão” sensível a maiúsculas, clike
, abaixo.
O operador -notlike
retorna booleano True
se nenhuma correspondência for encontrada e False
se houver uma correspondência. No caso de ser usado em uma coleção, ele retornará todos os outros valores que não correspondem ao padrão fornecido no lado direito do operador -notlike
. Para adicionar sensibilidade a maiúsculas e minúsculas ao padrão, use o operador -cnotlike
.
Correspondência com base em Expressão Regular
O operador semelhante ao PowerShell e seus parentes são úteis, mas assim que você começa a precisar de correspondências mais complexas. Nesse ponto, você pode mergulhar no mundo profundo e escuro das expressões regulares (regex). Usando os operadores match
e notmatch
, você pode realizar correspondências de cadeias extremamente complexas com regex.
Similar ao operador semelhante ao PowerShell, match
e seu contraparte oposto, notmatch
, comparam duas strings retornando um valor booleano True
ou False
. Além disso, como os outros operadores, o mesmo comportamento pode ser aplicado a uma coleção, como demonstrado no exemplo abaixo.
Resumo
Neste artigo, você aprendeu sobre o operador semelhante ao PowerShell e muitos outros e como usar cada operador para valores únicos e coleções. Você viu como a saída difere com base no operador e se é escalar ou uma coleção.
Além disso, você também viu operadores com sensibilidade a maiúsculas e minúsculas, operadores de correspondência para correspondência com base em expressão regular ou curinga, e operadores de contenção para testar se o objeto contém um valor específico ou se um valor existe em um objeto específico.
