about_Quoting_Rules

Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

TEMA

about_Quoting_Rules

DESCRIPCIÓN BREVE

Describe las reglas del uso de comillas simples y dobles en Windows PowerShell®.

DESCRIPCIÓN LARGA

Las comillas se usan para especificar una cadena literal. Puede incluir una cadena entre comillas simples (') o comillas dobles (").

Las comillas se usan también para crear una cadena de tipo "here-string". Una cadena de tipo "here-string" es una cadena entre comillas simples o comillas dobles en la que las comillas se interpretan literalmente. Una cadena de tipo "here-string" puede abarcar varias líneas. Todas las líneas de una cadena de tipo "here-string" se interpretan como cadenas, aunque no se encuentren entre comillas.

En los comandos para equipos remotos, las comillas definen las partes del comando que se ejecutan en el equipo remoto. En una sesión remota, las comillas también determinan si las variables de un comando se interpretan primero en el equipo local o en el equipo remoto.

CADENAS ENTRE COMILLAS SIMPLES Y DOBLES

Cuando se incluye una cadena entre comillas dobles, los nombres de las variables que van precedidos por un signo de dólar ($) se reemplazan con el valor de la variable antes de que la cadena se pase al comando para su procesamiento.

Por ejemplo:

        $i = 5
        "The value of $i is $i."

La salida de este comando es la siguiente:

        The value of 5 is 5.

Además, en una cadena entre comillas dobles, se evalúan las expresiones y el resultado se inserta en la cadena. Por ejemplo:

        "The value of $(2+3) is 5."

La salida de este comando es la siguiente:

        The value of 5 is 5.

Cuando se incluye una cadena entre comillas simples, la cadena se pasa al comando exactamente tal como se escribe. No se lleva a cabo ninguna sustitución. Por ejemplo:

        $i = 5
        'The value of $i is $i.'

La salida de este comando es la siguiente:

        The value $i is $i.

De forma similar, no se evalúan las expresiones de las cadenas entre comillas simples. Se interpretan como literales. Por ejemplo:

        'The value of $(2+3) is 5.'

La salida de este comando es la siguiente:

        The value of $(2+3) is 5.

Para evitar la sustitución de un valor de variable en una cadena entre comillas dobles, use el carácter de acento grave (`) (ASCII 96), que es el carácter de escape de Windows PowerShell.

En el ejemplo siguiente, el carácter de acento grave que precede a la primera variable $i impide que Windows PowerShell reemplace el nombre de la variable por su valor. Por ejemplo:

        $i = 5
        "The value of `$i is $i."

La salida de este comando es la siguiente:

        The value $i is 5.

Para que las comillas dobles aparezcan en una cadena, encierre la cadena completa entre comillas simples. Por ejemplo:

        'As they say, "live and learn."'

La salida de este comando es la siguiente:

        As they say, "live and learn."

También puede incluir una cadena entre comillas simples en una cadena entre comillas dobles. Por ejemplo:

        "As they say, 'live and learn.'"

La salida de este comando es la siguiente:

        As they say, 'live and learn.'

También puede duplicar las comillas de una frase entre comillas dobles. Por ejemplo:

        "As they say, ""live and learn."""

La salida de este comando es la siguiente:

        As they say, "live and learn."

Para incluir una comilla simple en una cadena entre comillas simples, use una segunda comilla simple consecutiva. Por ejemplo:

        'don''t'

La salida de este comando es la siguiente:

        don't

Para forzar a Windows PowerShell a interpretar literalmente una comilla doble, use un carácter de acento grave. Esto impide que Windows PowerShell interprete la comilla como delimitador de cadenas. Por ejemplo:

        "Use a quotation mark (`") to begin a string."

Dado que el contenido de las cadenas entre comillas simples se interpreta literalmente, no puede usar el carácter de acento grave para forzar una interpretación de carácter literal 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 el final de la cadena.

        PS C:\> 'Use a quotation mark (`') to begin a string.'
        Unexpected token ')' in expression or statement.
        At line:1 char:27
        + 'Use a quotation mark (`') <<<<  to begin a string.'

CADENAS DE TIPO "HERE-STRING"

Las reglas de las comillas para las cadenas de tipo "here-string" son ligeramente diferentes.

Una cadena de tipo "here-string" es una cadena entre comillas simples o comillas dobles en la que las comillas se interpretan literalmente. Una cadena de tipo "here-string" puede abarcar varias líneas. Todas las líneas de las cadenas de tipo "here-string" se interpretan como cadenas, aunque no se encuentren entre comillas.

Al igual que las cadenas normales, las variables se reemplazan por sus valores en las cadenas de tipo "here-string" entre comillas dobles. En las cadenas de tipo "here-string" entre comillas simples, las variables no se reemplazan por sus valores.

Puede usar cadenas de tipo "here-string" en cualquier texto, pero son especialmente útiles en los siguientes tipos de texto:

  • -- Texto que contiene comillas literales

  • -- Varias líneas de texto, como el texto de un documento HTML o XML

  • -- Texto de ayuda de un script o función

Una cadena de tipo "here-string" puede tener cualquiera de los siguientes formatos, donde <Enter> representa el carácter oculto de salto de línea o nueva línea que se agrega al presionar la tecla ENTRAR.

     Double-quotes:
        @"<Enter>
        <string> [string] ...<Enter>
        "@

    Single-quotes:
        @'<Enter>
        <string> [string] ...<Enter>
        '@

En cualquiera de estos formatos, la comilla de cierre debe ser el primer carácter de la línea.

Una cadena de tipo "here-string" contiene todo el texto entre los dos caracteres ocultos. En la cadena de tipo "here-string", todas las comillas se interpretan literalmente. Por ejemplo:

        @"
        For help, type "get-help"
        "@

La salida de este comando es la siguiente:

        For help, type "get-help"

Si se usa una cadena de tipo "here-string", puede simplificarse el uso de una cadena en un comando. Por ejemplo:

        @"
        Use a quotation mark (') to begin a string.
        "@

La salida de este comando es la siguiente:

        Use a quotation mark (') to begin a string.

En las cadenas de tipo "here-string" entre comillas simples, las variables se interpretan literalmente y se reproducen exactamente. Por ejemplo:

        @'
        The $profile variable contains the path
        of your Windows PowerShell profile.
        '@

La salida de este comando es la siguiente:

        The $profile variable contains the path
        of your Windows PowerShell profile.

En las cadenas de tipo "here-string" entre comillas dobles, variables se reemplazan por sus valores. Por ejemplo:

        @" 
        Even if you have not created a profile,
        the path of the profile file is:
        $profile.
        "@

La salida de este comando es la siguiente:

        Even if you have not created a profile,
        the path of the profile file is:
        C:\Users\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.

Las cadenas de tipo "here-string" suelen usarse para asignar varias líneas a una variable. Por ejemplo, la siguiente cadena de tipo "here-string" asigna una página de 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>Formats the output as a table.</maml:para>
                </maml:description>
                <command:verb>format</command:verb>
                <command:noun>table</command:noun>
                <dev:version></dev:version>
        </command:details>
        ...
        </command:command>
        "@

Las cadenas de tipo "here-string" también son un formato adecuado para la entrada en el cmdlet ConvertFrom-StringData, que convierte las cadenas de tipo "here-string" en tablas hash. Para obtener más información, vea ConvertFrom-StringData.

PALABRAS CLAVE

about_Here-Strings

about_Quotes

about_Quotation_Marks

VEA TAMBIÉN

about_Escape_Characters

ConvertFrom-StringData