about_Quoting_Rules

Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0

TÓPICO

about_Quoting_Rules

DESCRIÇÃO BREVE

Descreve as regras para usar aspas simples e duplas no Windows PowerShell®.

DESCRIÇÃO LONGA

As aspas são usadas para especificar uma cadeia de caracteres literal. Você pode colocar uma cadeia de caracteres entre aspas simples (') ou aspas duplas (").

As aspas também são usadas para criar uma here-string. Uma here-string é uma cadeia de caracteres entre aspas simples ou aspas duplas onde as aspas são interpretadas literalmente. Uma here-string pode abranger várias linhas. Todas as linhas em uma here-string são interpretadas como cadeias de caracteres, mesmo que elas não estejam entre aspas.

Em comandos para computadores remotos, as aspas definem as partes do comando que serão executadas no computador remoto. Em uma sessão remota, aspas também determinam se as variáveis em um comando são interpretadas primeiro no computador local ou no computador remoto.

CADEIAS DE CARACTERES COM ASPAS ÚNICAS E DUPLAS

Quando você colocar uma cadeia de caracteres entre aspas duplas (uma cadeia de caracteres com aspas duplas), os nomes de variáveis que são precedidos por um sinal de cifrão ($) serão substituídos pelo valor da variável antes da cadeia de caracteres ser passada para o comando para processamento.

Por exemplo:

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

A saída desse comando é:

        The value of 5 is 5.

Além disso, em uma cadeia de caracteres com aspas duplas, as expressões são avaliadas e o resultado é inserido na cadeia de caracteres. Por exemplo:

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

A saída desse comando é:

        The value of 5 is 5.

Quando você colocar uma cadeia de caracteres entre aspas simples: (uma cadeia de caracteres com aspas simples), a cadeia de caracteres é passada para o comando exatamente conforme você digitou. Nenhuma substituição será executada. Por exemplo:

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

A saída desse comando é:

        The value $i is $i.

Da mesma forma, as expressões em cadeias de caracteres entre aspas simples não são avaliadas. Elas são interpretados como literais. Por exemplo:

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

A saída desse comando é:

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

Para evitar a substituição de um valor de variável em uma cadeia de caracteres entre aspas duplas, use o caractere de acento grave (') (ASCII 96), que é o Windows PowerShell caractere de escape.

No exemplo a seguir, o caractere de acento grave que precede a primeira variável $i previne Windows PowerShell de substituir o nome da variável pelo seu valor. Por exemplo:

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

A saída desse comando é:

        The value $i is 5.

Para fazer com que as marcas de aspas duplas apareçam em uma cadeia de caracteres, coloque a cadeia de caracteres inteira entre aspas. Por exemplo:

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

A saída desse comando é:

        As they say, "live and learn."

Você também pode colocar uma cadeia de caracteres entre aspas simples em uma cadeia de caracteres entre aspas duplas. Por exemplo:

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

A saída desse comando é:

        As they say, 'live and learn.'

Ou então dobrar as aspas ao redor de uma frase de aspas duplas. Por exemplo:

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

A saída desse comando é:

        As they say, "live and learn."

Para incluir aspas simples em uma cadeia de caracteres entre aspas simples, use uma segunda aspa simples consecutiva. Por exemplo:

        'don''t'

A saída desse comando é:

        don't

Para forçar Windows PowerShell a interpretar literalmente aspas duplas, use um caractere de acento grave. Isto impedirá Windows PowerShell a interpretar as aspas como um delimitador de cadeia de caracteres. Por exemplo:

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

Como o conteúdo de cadeias de caracteres entre aspas simples é interpretado literalmente, você não pode usar o caractere de acento grave para forçar uma interpretação de caractere literal em uma cadeia de caracteres entre aspas.

Por exemplo, o seguinte comando gera um erro porque Windows PowerShell não reconhece o caractere de escape. Ao invés disso, ele interpreta a segunda aspa como o final da cadeia de caracteres.

        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.'

HERE-STRINGS

As regras de aspas para here-strings são ligeiramente diferentes.

Uma here-string é uma cadeia de caracteres entre aspas simples ou aspas duplas em que as aspas são interpretadas literalmente. Uma here-string pode abranger várias linhas. Todas as linhas em uma here-string são interpretadas como cadeias de caracteres, embora elas não estejam entre aspas.

Como cadeias de caracteres regulares, as variáveis são substituídas por seus valores em here-string entre aspas duplas. Em here-string entre aspas simples, as variáveis não são substituídas por seus valores.

Você pode usar here-string para qualquer texto, mas elas são especialmente úteis para os seguintes tipos de texto:

  • – Texto que contenha aspas literais

  • -Várias linhas de texto, como o texto em um documento HTML ou XML

  • -- O texto de Ajuda para uma função ou um script

Uma here-string pode ter qualquer dos seguintes formatos, em que <Enter> representa o caractere de alimentação de linha ou de nova linha que é adicionado quando você pressiona a tecla ENTER.

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

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

Em qualquer formato, as aspas de fechamento devem ser o primeiro caractere na linha.

Uma here-string contém todo o texto entre os dois caracteres ocultos. Na here-string, todas as aspas simples são interpretadas literalmente. Por exemplo:

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

A saída desse comando é:

        For help, type "get-help"

O uso da here-string pode simplificar ao se usar uma cadeia de caracteres em um comando. Por exemplo:

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

A saída desse comando é:

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

Em here-string entre aspas simples, as variáveis são interpretadas literalmente e reproduzidas exatamente. Por exemplo:

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

A saída desse comando é:

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

Em here-string entre aspas duplas, variáveis são substituídas por seus valores. Por exemplo:

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

A saída desse comando é:

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

Here-strings são geralmente usadas para atribuir várias linhas a uma variável. Por exemplo, a seguinte here-string atribui uma página do XML para a variável $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>
        "@

Here-strings também são um formato conveniente para a entrada do cmdlet ConvertFrom-StringData, que converte here-strings para tabelas de hash. Para obter mais informações, consulte ConvertFrom-StringData.

PALAVRAS-CHAVE

about_Here-Strings

about_Quotes

about_Quotation_Marks

CONSULTE TAMBÉM

about_Escape_Characters

ConvertFrom-StringData