En PowerShell, sintaxis para if
es tan así:¿Cómo funciona `if (Test-Path ...)` realmente funciona?
if (<test1>)
{<statement list 1>}
[elseif (<test2>)
{<statement list 2>}]
[else
{<statement list 3>}]
Otra regla de sintaxis es que para subexpresiones, es necesario utilizar paréntesis así:
write-output (get-date)
Así que con estos dos reglas combinadas, esperaría que la prueba para alguna ruta se deba escribir con dos conjuntos de paréntesis como este:
if ((Test-Path ...)) {
# do something
}
Sin embargo, esto también funciona:
if (Test-Path ...) {
# do something
}
y sólo por la mayor abundamiento, este no trabajo:
if (!Test-Path ...) {
# do something
}
(aquí, lo que se necesita para envolver la subexpresión entre paréntesis, como de costumbre).
¿Alguien puede explicar las reglas de sintaxis que se aplican aquí y cómo puede utilizar la prueba IF solo con un paréntesis? ¿Es alguna magia de PowerShell o estoy malinterpretando las reglas básicas de sintaxis?
Prueba esto: 'if true'. Le dará un error * analizador *. No soy un experto, pero me parece que los paréntesis son aquí una construcción del lenguaje, no un operador de subexpresión. – Borek
@Borek: en PowerShell creo que lo que tendría que escribir es si $ True – wunth