es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Powershell tiene reglas extrañas de equilibrio de paréntesis / corchetes?

Mi PowerShell actúa de manera muy extraña cuando intento hacer una función. Para demostrarlo, aquí hay una función básica que, no sé, calcula la fórmula cuadrática:

  1 function Get-Quadratic {
  2
  3 [CmdletBinding()]
  4
  5 param (
  6         [Parameter(Position = 0, Mandatory = $true)]
  7         [int32]$a,
  8         [Parameter(Position = 1, Mandatory = $true)]
  9         [int32]$b,
 10         [Parameter(Position = 2, Mandatory = $true)]
 11         [int32]$c
 12 )
 13
 14 Write-Output $a + " " + $b + " " + $c
 15 }

Y si intentas cargar esto con . .\quadratic.ps1, obtienes:

At C:\Users\(yo)\Desktop\Cur\playground\quadratic.ps1:7 char:11
+     [int32]$a
+              ~
Falta el ')' en la lista de parámetros de la función.
At C:\Users\(yo)\Desktop\Cur\playground\quadratic.ps1:1 char:24
+ function Get-Quadratic {
+                        ~
Falta el '}' de cierre en el bloque de declaraciones o definición de tipo.
At C:\Users\(yo)\Desktop\Cur\playground\quadratic.ps1:12 char:1
+ )
+ ~
Símbolo inesperado ')' en la expresión o declaración.
At C:\Users\(yo)\Desktop\Cur\playground\quadratic.ps1:15 char:1
+ }
+ ~
Símbolo inesperado '}' en la expresión o declaración.
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : MissingEndParenthesisInFunctionParameterList

He seguido tutoriales hasta el más mínimo detalle al intentar hacer funciones, pero mi PowerShell parece no gustarle ni siquiera los comandos más básicos. Si ayuda, mi versión es:

Major  Minor  Build  Revision
5      1      19041  1320
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que hay algunos errores de sintaxis en el código de la función.

    En primer lugar, en la lista de parámetros en las líneas 6-11, debería haber una coma que separe cada parámetro. Por ejemplo, la línea 7 debería ser:

    [int32]$a,
    

    En segundo lugar, falta un paréntesis de cierre en la línea 13. Debería ser:

    Write-Output $a + " " + $b + " " + $c
    }
    

    En tercer lugar, parece haber un problema de formato con las comillas alrededor del espacio en la instrucción Write-Output. Aparecen como " en lugar de solo ".

    Intenta corregir estos problemas y ver si la función se carga correctamente sin errores.

Comments are closed.