TEMA about_Quoting_Rules DESCRIPCIÓN BREVE Describe las reglas referentes al uso de comillas simples y dobles en Windows PowerShell. DESCRIPCIÓN DETALLADA Las comillas se utilizan para especificar una cadena literal. Puede escribir una cadena entre comillas simples (') o entre comillas dobles ("). Las comillas también se utilizan para crear una cadena multilínea intercalada en el código. Una cadena multilínea intercalada en el código es una cadena entre comillas simples o dobles que se interpretan de manera literal. Este tipo de cadena puede abarcar varias líneas. Todas estas líneas se interpretan como cadenas, aunque no estén entre comillas. En los comandos remotos, las comillas definen las partes del comando que se ejecutan en el equipo remoto. En una sesión remota, las comillas determinan también si las variables de un comando se interpretan primero en el equipo local o en el equipo remoto. Cadenas entre comillas simples o dobles Si escribe una cadena entre comillas dobles, los nombres de variables precedidos de un signo de dólar ($) se reemplazan con el valor de la variable antes de que se pase la cadena al comando para su procesamiento. Por ejemplo: $i = 5 "El valor de $i es $i." El resultado de este comando es el siguiente: El valor de 5 es 5. Asimismo, en una cadena entre comillas dobles, se evalúan las expresiones y se inserta el resultado en la cadena. Por ejemplo: "El valor de $(2+3) es 5." El resultado de este comando es el siguiente: El valor de 5 es 5. Si escribe una cadena entre comillas simples, la cadena se pasará al comando exactamente como la escribió. No se realiza ninguna sustitución. Por ejemplo: $i = 5 'El valor de $i es $i.' El resultado de este comando es el siguiente: El valor de $i es $i. De manera similar, no se evalúan las expresiones en las cadenas que se encuentran entre comillas simples. Se interpretan como literales. Por ejemplo: 'El valor de $(2+3) es 5.' El resultado de este comando es el siguiente: El valor de $(2+3) es 5. Para evitar que se reemplace un valor de variable en una cadena entre comillas dobles, utilice el carácter de acento grave (`) (ASCII 96), que es el carácter de escape de Windows PowerShell. En el siguiente ejemplo, el carácter de acento grave que precede a la primera variable $i evita que Windows PowerShell reemplace el nombre de la variable por su valor. Por ejemplo: $i = 5 "El valor de `$i es $i." El resultado de este comando es el siguiente: El valor de $i es 5. Para que aparezcan comillas dobles en una cadena, escriba toda la cadena entre comillas simples. Por ejemplo: 'Como dicen, "nunca te acostarás sin saber una cosa más".' El resultado de este comando es el siguiente: Como dicen, "nunca te acostarás sin saber una cosa más". También puede escribir una cadena entre comillas simples en una cadena entre comillas dobles. Por ejemplo: "Como dicen, 'nunca te acostarás sin saber una cosa más'." El resultado de este comando es el siguiente: Como dicen, 'nunca te acostarás sin saber una cosa más'. O bien, duplique las comillas alrededor de una frase que se encuentra entre comillas dobles. Por ejemplo: "Como dicen, ""nunca te acostarás sin saber una cosa más""." El resultado de este comando es el siguiente: Como dicen, "nunca te acostarás sin saber una cosa más". Para incluir comillas simples en una cadena entre comillas simples, utilice una segunda comilla simple consecutiva. Por ejemplo: 'un niño ''tranquilo''' El resultado de este comando es el siguiente: un niño 'tranquilo' Para obligar a Windows PowerShell a interpretar literalmente las comillas dobles, utilice un carácter de acento grave. De este modo, Windows PowerShell no interpreta la comilla como un delimitador de cadena. Por ejemplo: "Usar una comilla (`") para comenzar una cadena." Dado que el contenido de las cadenas entre comillas simples se interpreta literalmente, no se puede usar el carácter de acento grave para que se interpreten literalmente los caracteres en una cadena entre comillas simples. Por ejemplo, el comando siguiente genera un error porque Windows PowerShell no reconoce el carácter de escape. En su lugar, interpreta la segunda comilla como final de la cadena. PS C:\> 'Usar una comilla (`') para comenzar una cadena.' Símbolo (token) inesperado ')' en la expresión o la instrucción. En línea:1 carácter:27 + 'Usar una comilla (`') <<<< para comenzar una cadena.' Cadenas multilínea intercaladas en el código que se encuentran entre comillas simples o dobles Las reglas referentes al uso de comillas para las cadenas multilínea intercaladas en el código son ligeramente diferentes. Una cadena multilínea intercalada en el código es una cadena entre comillas simples o dobles que se interpretan de manera literal. Este tipo de cadena puede abarcar varias líneas. Todas estas líneas se interpretan como cadenas, aunque no estén entre comillas. Al igual que en las cadenas normales, las variables se reemplazan con sus valores en las cadenas multilínea intercaladas en el código que se encuentran entre comillas dobles. En las cadenas multilínea intercaladas en el código que se encuentran entre comillas simples, las variables no se reemplazan con sus valores. Puede utilizar este tipo de cadenas para cualquier texto, pero resultan particularmente útiles para los siguientes tipos de texto: - Texto que contiene comillas literales; - varias líneas de texto, como el texto de un documento HTML o XML; - y el texto de la Ayuda de un script o una función. Una cadena multilínea intercalada en el código puede tener cualquiera de los formatos siguientes, donde <Entrar> representa el carácter oculto de avance de línea o línea nueva que se agrega al presionar la tecla ENTRAR. Formato 1: @"<Entrar> <cadena> [cadena] ...<Entrar> "@ Formato 2: @'<Entrar> <cadena> [cadena] ...<Entrar> '@ En ambos formatos, la comilla de cierre debe ser el primer carácter de la línea. Una cadena multilínea intercalada en el código contiene todo el texto que se encuentra entre los dos caracteres ocultos. En este tipo de cadena, todas las comillas se interpretan literalmente. Por ejemplo: @" Para obtener ayuda, escriba "get-help" "@ El resultado de este comando es el siguiente: Para obtener ayuda, escriba "get-help" Si utiliza una cadena multilínea intercalada en el código, puede simplificar el uso de una cadena en un comando. Por ejemplo: @" Usar una comilla (') para comenzar una cadena. "@ El resultado de este comando es el siguiente: Usar una comilla (') para comenzar una cadena. En las cadenas multilínea intercaladas en el código que se encuentran entre comillas simples, las variables se interpretan literalmente y se reproducen exactamente como se escriben. Por ejemplo: @' La variable $profile contiene la ruta de acceso de su perfil de Windows PowerShell. '@ El resultado de este comando es el siguiente: La variable $profile contiene la ruta de acceso de su perfil de Windows PowerShell. En las cadenas multilínea intercaladas en el código que se encuentran entre comillas dobles, las variables se reemplazan con sus valores. Por ejemplo: @" Incluso si no ha creado un perfil, la ruta de acceso del archivo de perfil es: $profile. "@ El resultado de este comando es el siguiente: Incluso si no ha creado un perfil, la ruta de acceso del archivo de perfil es: C:\Users\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1. Las cadenas multilínea intercaladas en el código se suelen utilizar para asignar varias líneas a una variable. Por ejemplo, la siguiente cadena multilínea intercalada en el código asigna una página XML a la variable $page. $page = [XML] @" <command:command xmlns:maml="https://schemas.microsoft.com/maml/2004/10" xmlns:command="https://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="https://schemas.microsoft.com/maml/dev/2004/10"> <command:details> <command:name> Format-Table </command:name> <maml:description> <maml:para>Aplica al resultado el formato de tabla.</maml:para> </maml:description> <command:verb>format</command:verb> <command:noun>table</command:noun> <dev:version></dev:version> </command:details> ... </command:command> "@ Las cadenas multilínea intercaladas en el código también resultan útiles para proporcionar datos al cmdlet ConvertFrom-StringData, que convierte estas cadenas en tablas hash. Para obtener más información, vea ConvertFrom-StringData. VEA TAMBIÉN about_Escape_Characters ConvertFrom-StringData