about_Operator_Precedence
Descripción breve
Enumera los operadores de PowerShell en orden de precedencia.
Descripción larga
Los operadores de PowerShell permiten construir expresiones sencillas, pero eficaces. En este tema se enumeran los operadores en orden de precedencia. El orden de precedencia es el orden en el que PowerShell evalúa los operadores cuando aparecen varios operadores en la misma expresión.
Cuando los operadores tienen la misma precedencia, PowerShell los evalúa de izquierda a derecha a medida que aparecen dentro de la expresión. Las excepciones son los operadores de asignación, los operadores de conversión y los operadores de negación (!
, -not
, -bnot
), que se evalúan de derecha a izquierda.
Puede usar gabinetes, como paréntesis, para invalidar el orden de precedencia estándar y forzar a PowerShell a evaluar la parte delimitada de una expresión antes de una parte no cerrada.
En la lista siguiente, los operadores aparecen en el orden en que se evalúan. Los operadores de la misma línea, o en el mismo grupo, tienen la misma prioridad.
La columna Operador enumera los operadores. En la columna Referencia se muestra el tema ayuda de PowerShell en el que se describe el operador. Para mostrar el tema, escriba get-help <topic-name>
.
OPERATOR | REFERENCIA |
---|---|
$() @() () @{} |
about_Operators |
. ?. (acceso de miembro) |
about_Operators |
:: (estático) |
about_Operators |
[0] ?[0] (operador de índice) |
about_Operators |
[int] (operadores de conversión) |
about_Operators |
-split (unario) |
about_Split |
-join (unario) |
about_Join |
, (operador de coma) |
about_Operators |
++ -- |
about_Assignment_Operators |
! -not |
about_Logical_Operators |
.. (operador range) |
about_Operators |
-f (operador format) |
about_Operators |
- (unario/negativo) |
about_Arithmetic_Operators |
* / % |
about_Arithmetic_Operators |
+ - |
about_Arithmetic_Operators |
El siguiente grupo de operadores tiene la misma prioridad. Sus variantes que distinguen mayúsculas de minúsculas y distinguen mayúsculas de minúsculas explícitamente tienen la misma prioridad.
OPERATOR | REFERENCIA |
---|---|
-split (binario) |
about_Split |
-join (binario) |
about_Join |
-is -isnot -as |
about_Type_Operators |
-eq -ne -gt -ge -lt -le |
about_Comparison_Operators |
-like -notlike |
about_Comparison_Operators |
-match -notmatch |
about_Comparison_Operators |
-in -notIn |
about_Comparison_Operators |
-contains -notContains |
about_Comparison_Operators |
-replace |
about_Comparison_Operators |
La lista se reanuda aquí con los siguientes operadores en orden de precedencia:
OPERATOR | REFERENCIA |
---|---|
-band -bnot -bor -bxor -shr -shl |
about_Arithmetic_Operators |
-and -or -xor |
about_Logical_Operators |
Los siguientes elementos no son operadores true. Forman parte de la sintaxis de comandos de PowerShell, no de la sintaxis de expresión. La asignación siempre es la última acción que se produce.
SINTAXIS | REFERENCIA |
---|---|
. (dot-source) |
about_Operators |
& (llamada) |
about_Operators |
? <if-true> : <if-false> (Operador Ternary) |
about_Operators |
?? (operador de fusión null) |
about_Operators |
| (operador de canalización) |
about_Operators |
> >> 2> 2>> 2>&1 |
about_Redirection |
&& || (operadores de cadena de canalización) |
about_Operators |
= += -= *= /= %= ??= |
about_Assignment_Operators |
Ejemplos
Los dos comandos siguientes muestran los operadores aritméticos y el efecto de usar paréntesis para forzar a PowerShell a evaluar primero la parte delimitada de la expresión.
PS> 2 + 3 * 4
14
PS> (2 + 3) * 4
20
En el ejemplo siguiente se obtienen los archivos de texto de solo lectura del directorio local y se guardan en la $read_only
variable .
$read_only = Get-ChildItem *.txt | Where-Object {$_.isReadOnly}
Es equivalente al ejemplo siguiente.
$read_only = ( Get-ChildItem *.txt | Where-Object {$_.isReadOnly} )
Dado que el operador de canalización (|
) tiene una prioridad mayor que el operador de asignación (=
), los archivos que obtiene el Get-ChildItem
Where-Object
cmdlet se envían al cmdlet para filtrar antes de asignarlos a la $read_only
variable.
En el ejemplo siguiente se muestra que el operador de índice tiene prioridad sobre el operador de conversión.
Esta expresión crea una matriz de tres cadenas. A continuación, usa el operador de índice con un valor de 0 para seleccionar el primer objeto de la matriz, que es la primera cadena. Por último, convierte el objeto seleccionado como una cadena. En este caso, la conversión no tiene ningún efecto.
PS> [string]@('Windows','PowerShell','2.0')[0]
Windows
Esta expresión usa paréntesis para forzar que se produzca la operación de conversión antes de la selección del índice. Como resultado, toda la matriz se convierte como una cadena (única). A continuación, el operador de índice selecciona el primer elemento de la matriz de cadenas, que es el primer carácter.
PS> ([string]@('Windows','PowerShell','2.0'))[0]
W
En el ejemplo siguiente, dado que el -gt
operador (mayor que) tiene una prioridad mayor que el -and
operador (AND lógico), el resultado de la expresión es FALSE.
PS> 2 -gt 4 -and 1
False
Es equivalente a la siguiente expresión.
PS> (2 -gt 4) -and 1
False
Si el operador -and tenía mayor prioridad, la respuesta sería TRUE.
PS> 2 -gt (4 -and 1)
True
Sin embargo, en este ejemplo se muestra un principio importante de la administración de la precedencia del operador. Cuando una expresión es difícil de interpretar, use paréntesis para forzar el orden de evaluación, incluso cuando fuerza la prioridad del operador predeterminado. Los paréntesis hacen que sus intenciones sean claras para las personas que leen y mantienen sus scripts.
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de