Como muchas otros lenguajes de programación, PowerShell cuenta con varios operadores de comparación. Sin embargo, a diferencia de otros lenguajes, esos operadores de comparación pueden parecer un poco extraños. En lugar de `==
`, tienes `eq
`. En lugar de `<>
`, tienes `ne
`. Puede ser confuso para los recién llegados. Echemos un vistazo al operador `like` de PowerShell y a otros operadores de comparación en este artículo.
Pruebas de igualdad con los operadores `eq
` y `ceq
`
Para verificar si un objeto es igual a otro objeto en PowerShell, se utiliza el operador `eq
`. El operador `eq
` compara objetos simples de muchos tipos, como cadenas, valores booleanos, enteros, y más. Cuando se utiliza, el operador `eq
` devolverá un valor booleano `True
` o `False
` dependiendo del resultado.
El operador `-eq
` necesita dos valores para comparar. Digamos que asignas una cadena a una variable llamada `$string
`. Te gustaría comparar el valor de esta variable con el valor de la cadena `"PowerShell"
` para asegurarte de que son iguales.
En el siguiente ejemplo, puedes ver que estamos asignando el valor PowerShell
a la variable $string
. Luego, utilizando el operador eq
, el ejemplo está comparando el valor de $string
con la cadena powershell
. ¿Suficientemente fácil, verdad? Pero espera, aunque no son realmente iguales.
Ten en cuenta que
=
es un operador de asignación y NO un operador de comparación. No puedes usar=
para comparar un valor con otro en PowerShell.
Probando la Sensibilidad a Mayúsculas y Minúsculas Con el Operador ceq
En el ejemplo anterior, observa cómo eq
devolvió un valor booleano Verdadero
incluso cuando la cadena no era exactamente la misma. Este comportamiento ocurre porque el operador eq
no distingue entre mayúsculas y minúsculas. Para probar la igualdad sensible a mayúsculas y minúsculas, utiliza el operador ceq
. El operador ceq
es exactamente igual que eq
excepto por ser sensible a mayúsculas y minúsculas.
Puedes ver un ejemplo de uso de ceq
en el siguiente fragmento de código. Ahora observa cómo PowerShell percibe la diferencia sensible a mayúsculas y minúsculas.
Probando la Desigualdad Con los Operadores ne
y cne
Así como eq
y ceq
prueban la igualdad, PowerShell tiene un par de operadores que hacen exactamente lo contrario llamados ne
y cne
. Al igual que sus contrapartes, estos dos operadores realizan la misma operación pero al contrario.
Probando Elementos en una Colección
Normalmente, los operadores eq
y ceq
se utilizan para valores escalares o únicos como cadenas de texto, enteros y valores booleanos. Pero estos operadores también pueden encontrar instancias de valores particulares contenidos dentro de una colección como un array.
Observa en el siguiente ejemplo que estamos creando un array con 12 enteros. Tal vez quieras encontrar todas las instancias en ese array que sean iguales al número 9. No hay problema, utiliza el operador eq
contra el array para devolver todas las instancias del entero comparado.
Probando Colecciones para Contener Valores
Dado que acabas de aprender a usar el operador eq
para encontrar instancias en arrays, llevemos eso un paso más adelante e introduzcamos los operadores de “contención”. Estos operadores son contains
, notcontains
, in
y notin
. Estos operadores devuelven un valor booleano Verdadero
o Falso
si una colección contiene una instancia o no.
Mira el siguiente ejemplo. En este caso, estamos creando un array con nueve enteros. Si quieres una respuesta simple de Sí/No sobre si ese array contiene un cierto entero, puedes obtenerlo usando contains
o notcontains
.
De manera similar, tienes los operadores in
y notin
. Estos operadores son casi idénticos a contains
y notcontains
con una excepción: el valor a comparar está a la izquierda en lugar de la derecha.
Probando “Mayor que” con los Operadores gt
y ge
¿Qué sucede si necesita probar si un número (un entero) es mayor que otro número o tal vez mayor que o igual a otro número? Utilizaría los operadores gt
y ge
. Estos operadores comparan enteros.
Al igual que los otros operadores, estos operadores devuelven valores booleanos Verdadero
o Falso
dependiendo de si un entero es mayor que otro. Ambos operadores prueban si el entero izquierdo es mayor que o mayor que o igual al entero derecho.
En el siguiente ejemplo, puedes ver cómo se comportan cada uno de estos operadores.
Similar al operador eq
que te permite encontrar instancias en colecciones, puedes hacer lo mismo con los operadores ge
y gt
también. PowerShell busca en cada elemento de una colección y compara cada valor con el que has proporcionado. Puedes ver un gran ejemplo de esto a continuación.
Probando “menor que” con los operadores lt
y le
Similar a los operadores gt
y ge
, los operadores lt
y le
realizan la misma función pero de manera opuesta. Los operadores lt
y le
comparan dos valores y prueban si el entero del lado izquierdo es menor que o menor que o igual al entero del lado derecho.
Puedes ver en el ejemplo siguiente que la misma funcionalidad de comparar cada valor en una colección se aplica exactamente igual que gt
y ge
.
Emparejamiento basado en comodines con el operador Like de PowerShell.
Hasta ahora, has aprendido cómo realizar coincidencias 1:1. Todos los operadores utilizados hasta ahora compararon un valor completo con otro, pero PowerShell tiene otro truco bajo la manga. También puedes comparar valores basados en comodines o asteriscos.
Digamos que solo conoces unos pocos caracteres de una cadena. No puedes usar eq
porque eq
requiere que conozcas toda la cadena. Usando el operador like de PowerShell, no necesitas conocer toda la cadena. Para probar si un valor es similar a otro, puedes reemplazar la parte que no conoces con un comodín.
Al igual que con otros operadores, esta misma funcionalidad se puede aplicar también a colecciones.
Puedes ver un ejemplo de PowerShell like y su contraparte sensible a mayúsculas y minúsculas, clike
, a continuación.
El operador -notlike
devuelve verdadero booleano True
si no se encuentra ninguna coincidencia y False
si hay una coincidencia. En caso de usarlo contra una colección, devolverá todos los demás valores que no coincidan con el patrón dado en el lado derecho del operador -notlike
. Para agregar sensibilidad a mayúsculas y minúsculas al patrón, utiliza el operador -cnotlike
.
Emparejamiento basado en Expresiones Regulares
El operador similar a PowerShell y sus relativos son útiles, pero tan pronto como comiences a necesitar coincidencias más complejas. En ese momento, puedes adentrarte en el profundo y oscuro mundo de las expresiones regulares (regex). Usando los operadores match
y notmatch
, puedes realizar coincidencias de cadenas extremadamente complejas con regex.
Similar al operador similar a PowerShell, match
y su contraparte opuesta, notmatch
, comparan dos cadenas y devuelven un valor booleano True
o False
. Además, al igual que con los otros operadores, el mismo comportamiento se puede aplicar a una colección, como demuestra el siguiente ejemplo.
Resumen
En este artículo, aprendiste sobre el operador similar a PowerShell y muchos otros, y cómo usar cada operador para valores individuales y colecciones. Has visto cómo difiere la salida según el operador y si es escalar o de colección.
Además, también has visto operadores con sensibilidad a mayúsculas y minúsculas, operadores de coincidencia para hacer coincidir según expresiones regulares o comodines, y operadores de contención para probar si el objeto contiene un valor específico o si un valor existe en un objeto específico.
