Combine varias condiciones en la declaración if en PowerShell
Usamos una declaración
ifcon operadores lógicos y operadores de comparación para combinar múltiples condiciones en PowerShell. También usamos paréntesis representados por (()) para agrupar condiciones y controlar el orden de evaluación. Por eso, es fundamental saber qué operadores lógicos, aritméticos y de comparación tenemos, qué significan y qué pueden hacer. Consulte las siguientes tablas para una rápida comprensión.
Todos los operadores de comparación, lógicos y aritméticos y su precedencia se explican en forma de tabla después de los ejemplos de código.
Usando if con operadores lógicos y de comparación
Utilice la instrucción if con un operador lógico (-and) y dos operadores de comparación (-gt y -lt) para combinar múltiples condiciones en PowerShell.
Úselo si con -and, -gt, & -lt:
$number1 = 3
$number2 = 11
if ($number1 -lt 4 -and $number2 -gt 10){
echo "'$number1' is less than '4' while '$number2' is greater than '10'"
}PRODUCCIÓN :
'3' is less than '4' while '11' is greater than '10'
La declaración if anterior solo se ejecutará si ambas condiciones son True; Tomemos otro ejemplo en el que ambas condiciones no se cumplen.
Úselo si con -and, -gt, & -lt:
$number1 = 4
$number2 = 11
if ($number1 -lt 4 -and $number2 -gt 10){
echo "'$number1' is less than '4' while '$number2' is greater than '10'"
}Esta vez no obtendremos ningún resultado porque aún deben cumplirse ambas condiciones.
Utilice la instrucción if con un operador lógico (-or) y un operador de comparación (-eq) para combinar varias condiciones en PowerShell. .
Úselo if con -or y -eq:
$firstname = "John"
$lastname = "Williamson"
if ($firstname -eq "John" -or $lastname -eq "Williamson") {
echo "Condition satisfied."
}
else{
echo "Condition not satisfied."
}PRODUCCIÓN :
Condition satisfied.Aquí, el bloque if solo se ejecutará si al menos una o todas las condiciones especificadas son Verdadero; de lo contrario, se ejecutará el bloque else. Modifiquemos el ejemplo donde ninguna condición es True.
Úselo if con -or y -eq:
$firstname = "Martin"
$lastname = "Guptill"
if ($firstname -eq "John" -or $lastname -eq "Williamson") {
echo "At least one or all conditions are satisfied."
}
else{
echo "No condition is satisfied."
}PRODUCCIÓN :
No condition is satisfied.Utilice la instrucción if con dos operadores lógicos (-not y -or) y un operador de comparación (-lt) para combinar múltiples condiciones en PowerShell.
Úselo si con -not, -or, & -eq:
if (-not 4 -le 2 -or 4 -lt 2) {
echo "Do something."
}PRODUCCIÓN :
Do something.¡Enfocar! Este ejemplo necesita su atención para comprenderlo. Primero, es esencial conocer la precedencia de cada operador utilizado en el fragmento de código anterior. Por lo tanto, -not tiene la prioridad más alta y se evaluará primero, mientras que -or tiene la precedencia más baja y se considerará en último lugar. Ahora, tenemos dos operadores -lt que tienen la misma precedencia, pero se evaluará el operador -lt, inmediatamente después del operador -not. primero.
Aquí está el flujo de ejecución:
4 -lt 2= Falso -no 4 -lt 2= Verdadero - Otro
4 -lt 2=Falso - Resultado del paso 2
-opaso 3=Verdadero -o Falso=Verdadero
Es el mejor momento para introducir los paréntesis, que controlan el orden de evaluación y aumentan la legibilidad del código. Las expresiones dentro de () se evaluarán primero. Si tenemos paréntesis anidados, los internos se considerarán primero. Vea el siguiente ejemplo.
Úselo si con -not, -o & -eq:
if ((-not (4 -le 2)) -or (4 -lt 2)) {
echo "Do something."
}PRODUCCIÓN :
Do something.De manera similar, podemos utilizar otros operadores que figuran en las siguientes tablas.
Operadores de comparación y su precedencia
Todos los operadores de comparación devuelven un valor booleano (True/False), True si se cumple la condición; de lo contrario,
-eq -ne -gt -ge -lt -le-like -notlike-match -notmatch-in -notIn-contains -notcontainsEl grupo anterior de operadores de comparación tiene la misma prioridad. Tenga en cuenta que distinguen entre mayúsculas y minúsculas (con el prefijo c, por ejemplo, -cmatch) y explícitamente sin distinguir entre mayúsculas y minúsculas (con el prefijo i, por ejemplo, -imatch) las variantes también tienen precedencia igual (idéntica). El operador que tenga la mayor precedencia (prioridad) se evaluará primero, mientras que los operadores que tengan la misma prioridad se evaluarán de izquierda a derecha tal como aparecen en la expresión dada.
En los ejemplos presentados en la tabla anterior, el operador de matriz representado por
@()se utilizó para crear matrices.
Operadores lógicos y aritméticos y su precedencia
Todos los operadores lógicos devuelven un valor booleano, True si se cumple la condición especificada; de lo contrario,
-band -bnot -bor -bxor-and -or -xorEl grupo de operadores anterior tiene la misma prioridad. Por lo tanto, se evaluarán primero los operadores con mayor prioridad. Por el contrario, los operadores con la misma precedencia se evaluarán de izquierda a derecha tal como aparecen en la expresión dada.
-nottiene la prioridad más alta en todos los operadores de comparación, aritméticos y lógicos. También es importante tener en cuenta que los operadores de comparación se evaluarán antes que los operadores aritméticos y lógicos porque tienen la mayor prioridad. También puedes controlar el orden de evaluación usando paréntesis.
Puedes consultar la prioridad del operador aquí.
Se trata de cómo combinar múltiples condiciones en la declaración if en PowerShell.
