comparing - powershell ss64
¿Por qué es igual a "-eq" en PowerShell y no solo "="? (3)
Básicamente, la respuesta es que es cómo Unix lo ha hecho para siempre. Por supuesto, si escribes algunos scripts de Bash, eso es lo que usarás y es realmente bueno que tu conocimiento de la sintaxis de PowerShell se transfiera de uno en uno a Bash.
Se responde en detalle en Windows PowerShell en acción , segunda edición de Bruce Payette (Kindle Location 3391).
Hablemos de la decisión de diseño más polémica en el lenguaje PowerShell.
Y el ganador es: ¿por qué diablos no usamos los símbolos convencionales para comparar como>,> =, <, <=, == y! =?
La respuesta es que los caracteres> y <se utilizan para la redirección de salida. Debido a que PowerShell es un shell y todos los lenguajes de shell en los últimos 30 años han usado> y <para la redirección de E / S, la gente esperaba que PowerShell hiciera lo mismo. Durante la primera versión beta pública de PowerShell, este tema generó discusiones que duraron meses.
Observamos una variedad de alternativas, como el análisis modal donde algunas veces significaba mayor que y otras veces significaba redirección. Observamos secuencias de caracteres alternativas para los operadores como:> o ->, ya sea para redirección o comparación. Hicimos pruebas de usabilidad y organizamos grupos de enfoque, y al final, decidimos con qué habíamos empezado.
Los operadores de redirección son> y <, y los operadores de comparación se toman del comando de prueba Unix (1). Esperamos que, debido a que estos operadores tienen un pedigrí de 30 años, sean adecuados y apropiados para su uso en PowerShell. (También esperamos que las personas sigan quejándose de esta decisión, aunque esperamos que no sea por 30 años más).
Las construcciones -ne
, -eq
y -gt
parecen al menos extrañas.
if ($true -eq $true){}
pero no
if ($true = $true){}
¿Cuál es la explicación?
El operador = ya es el operador de asignación. Para no confundir la comparación y el operador de asignación, eligen a otro operador. En este caso para -eq porque ya está en uso en otros lenguajes de script (UNIX).
Porque >
y <
son operadores de redireccionamiento de flujo en la mayoría de los shells. Bueno, excepto que PowerShell no admite la redirección de entrada de flujo. Aparte de eso, sería más difícil analizar / interpretar >
en algunos casos, redirigir la salida estándar y en otros casos greater than
. Además, al utilizar el enfoque -<operator_name>
, puede tener muchos más operadores que símbolos intuitivos, por ejemplo, -contains, -notcontains, -is, -replace, -split, -match, etc. Ejecute man about_operators
como punto de partida para el explorador Todos los operadores soportados por PowerShell.