Поделиться через


about_Quoting_Rules

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0

РАЗДЕЛ

about_Quoting_Rules

КРАТКОЕ ОПИСАНИЕ

Содержит описание правил использования одинарных и двойных кавычек в Windows PowerShell®.

ПОДРОБНОЕ ОПИСАНИЕ

Кавычки используются для задания литеральных строк. Строку можно заключить в одинарные (') или двойные (") кавычки.

Кавычки также используются для создания here-строк. Here-строка — это строка, заключенная в одинарные или двойные кавычки, в которой кавычки интерпретируются буквально. Here-строка может состоять из нескольких строк. Все строки в here-строке интерпретируются как строки даже несмотря на то, что они не заключены в кавычки.

В командах для удаленных компьютеров кавычки определяют части команды, выполняемые на удаленном компьютере. В удаленном сеансе кавычки также определяют, интерпретируются ли переменные в команде сначала на локальном, а затем на удаленном компьютере или наоборот.

СТРОКИ, ЗАКЛЮЧЕННЫЕ В ОДИНАРНЫЕ И ДВОЙНЫЕ КАВЫЧКИ

Если строка заключена в двойные кавычки, имена переменных, перед которыми стоит знак доллара ($), заменяются значениями переменных перед передачей строки в команду для обработки.

Например:

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

Выходные данные команды:

        The value of 5 is 5.

Кроме того, в строке, заключенной в двойные кавычки, вычисляются выражения, и результат вставляется в строку. Например:

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

Выходные данные команды:

        The value of 5 is 5.

Строка, заключенная в одинарные кавычки, передается в команду точно в том виде, в котором она введена. Подстановок не производится. Например:

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

Выходные данные команды:

        The value $i is $i.

Кроме того, выражения, заключенные в одинарные кавычки, не вычисляются. Они интерпретируются как литералы. Например:

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

Выходные данные команды:

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

Для предотвращения подстановки значения переменной в строке, заключенной в двойные кавычки, используйте обратный апостроф (`) (код ASCII 96), который является escape-символом Windows PowerShell.

В примере ниже перед первым вхождением переменной $i указан обратный апостроф, в результате чего Windows PowerShell не заменяет имя переменной ее значением. Например:

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

Выходные данные команды:

        The value $i is 5.

Для отображения двойных кавычек в строке нужно заключить всю строку в одинарные кавычки. Например:

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

Выходные данные команды:

        As they say, "live and learn."

Также можно заключить строку, содержащую одинарные кавычки, в двойные кавычки. Например:

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

Выходные данные команды:

        As they say, 'live and learn.'

Кроме того, можно заключить строку, содержащую двойные кавычки, в двойные кавычки. Например:

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

Выходные данные команды:

        As they say, "live and learn."

Для включения одинарной кавычки в строку, заключенную в одинарные кавычки, используйте одинарную кавычку два раза подряд. Например:

        'don''t'

Выходные данные команды:

        don't

Чтобы среда Windows PowerShell интерпретировала двойные кавычки буквально, используйте обратный апостроф. Это не позволяет среде Windows PowerShell интерпретировать кавычку как разделитель строк. Например:

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

Так как содержимое строки, заключенной в одинарные кавычки, интерпретируется буквально, в ней нельзя использовать обратный апостроф для принудительной интерпретации литерала.

Например, приведенная ниже команда выдает ошибку, так как Windows PowerShell не распознает escape-символ. Эта команда интерпретирует вторую кавычку как конец строки.

        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-СТРОКИ

Правила использования кавычек в here-строках немного отличаются.

Here-строка — это строка, заключенная в одинарные или двойные кавычки, в которой кавычки интерпретируются буквально. Here-строка может состоять из нескольких строк. Все строки в here-строке интерпретируются как строки даже несмотря на то, что они не заключены в кавычки.

В here-строках, заключенных в двойные кавычки, переменные заменяются своими значениями так же, как в обычных строках. В here-строках, заключенных в одинарные кавычки, переменные не заменяются своими значениями.

Here-строки можно использовать в случае любого текста, но они особенно полезны в случае текста следующих типов:

  • – текст, в котором содержатся литералы кавычек;

  • – текст, состоящий из нескольких строк, например HTML- или XML-документ;

  • – текст справки для сценария или функции.

Here-строка может иметь один из указанных ниже форматов, где <Ввод> означает перевод строки или скрытый символ новой строки, который добавляется при нажатии клавиши ВВОД.

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

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

В обоих форматах закрывающая кавычка должна быть первым символом строки.

В here-строке содержится весь текст между двумя скрытыми символами. В here-строке все кавычки интерпретируются буквально. Например:

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

Выходные данные команды:

        For help, type "get-help"

Применение here-строки позволяет упростить используемую в команде строку. Например:

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

Выходные данные команды:

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

В here-строках, заключенных в одинарные кавычки, переменные интерпретируются буквально и воспроизводятся точно в том виде, в котором они заданы. Например:

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

Выходные данные команды:

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

В here-строках, заключенных в двойные кавычки, переменные заменяются своими значениями. Например:

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

Выходные данные команды:

        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-строки обычно используются для присвоения переменной значения, состоящего из нескольких строк. Например, приведенная ниже here-строка позволяет присвоить переменной $page страницу XML-документа.

        $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-строки также являются удобным форматом входных данных для командлета ConvertFrom-StringData, который преобразует here-строки в хэш-таблицы. Дополнительные сведения см. в разделе ConvertFrom-StringData.

КЛЮЧЕВЫЕ СЛОВА

about_Here-Strings

about_Quotes

about_Quotation_Marks

СМ. ТАКЖЕ

about_Escape_Characters

ConvertFrom-StringData