РАЗДЕЛ
about_Quoting_Rules
КРАТКОЕ ОПИСАНИЕ
Описывает правила использования одиночных и двойных кавычек в Windows
PowerShell.
ПОЛНОЕ ОПИСАНИЕ
Кавычки используются для задания литеральных строк. Строку можно
заключить в одиночные (') или двойные (") кавычки.
Кавычки также используются для создания автономных строк.
Автономная строка - это строка, заключенная в одиночные или
двойные кавычки, в которой кавычки интерпретируются буквально.
Автономная строка может состоять из нескольких строк. Все строки
в автономной строке интерпретируются как строки, даже несмотря на
то что они не заключены в кавычки.
В командах для удаленных компьютеров кавычки определяют части команды,
выполняемые на удаленном компьютере. В удаленном сеансе кавычки также
определяют, интерпретируются ли переменные в команде сначала на
локальном, а затем на удаленном компьютере или наоборот.
Строки, заключенные в одиночные и двойные кавычки
Если строка заключена в двойные кавычки, имена переменных,
перед которыми стоит знак доллара ($), заменяются значениями
переменных перед передачей строки команде для обработки.
Пример:
$i = 5
"Значение $i: $i."
Выходные данные команды:
Значение 5: 5.
Кроме того, в строке, заключенной в двойные кавычки,
вычисляются выражения, и результат вставляется в строку. Пример:
"Значение $(2+3): 5."
Выходные данные команды:
Значение 5: 5.
Строка, заключенная в одиночные кавычки, передается команде
точно в том виде, в котором она введена. Подстановок не
производится. Пример:
$i = 5
'Значение $i: $i.'
Выходные данные команды:
Значение $i: $i.
Кроме того, выражения, заключенные в одиночные кавычки, не
вычисляются. Они интерпретируются как литералы. Пример:
'Значение $(2+3): 5.'
Выходные данные команды:
Значение $(2+3): 5.
Для предотвращения подстановки значения переменной в строке,
заключенной в двойные кавычки, используйте обратный апостроф
(`)[код ASCII 96], который является escape-символом Windows
PowerShell.
В следующем примере перед первым вхождением переменной $i
указан обратный апостроф (`), в результате чего Windows
PowerShell не заменяет имя переменной ее значением. Пример:
$i = 5
"Значение `$i: $i."
Выходные данные команды:
Значение $i: 5.
Для отображения двойных кавычек в строке необходимо заключить
всю строку в одиночные кавычки. Пример:
'Как говорится, "учись, пока жив".'
Выходные данные команды:
Как говорится, "учись, пока жив".
Также можно заключить строку, содержащую одиночные кавычки,
в двойные кавычки. Пример:
"Как говорится, 'учись, пока жив'."
Выходные данные команды:
Как говорится, 'учись, пока жив'.
Кроме того, можно заключить строку, содержащую двойные кавычки,
в двойные кавычки. Пример:
"Как говорится, ""учись, пока жив""."
Выходные данные команды:
Как говорится, "учись, пока жив".
Для включения одиночной кавычки в строку, заключенную в
одиночные кавычки, используйте одиночную кавычку два раза
подряд. Пример:
'don''t'
Выходные данные команды:
don't
Чтобы оболочка Windows PowerShell интерпретировала двойные
кавычки буквально, используйте обратный апостроф. Это не
позволяет оболочке Windows PowerShell интерпретировать кавычку
как разделитель строк. Пример:
"Используйте двойную кавычку (`") в начале строки."
Поскольку содержимое строки, заключенной в одиночные кавычки,
интерпретируется буквально, в ней нельзя использовать обратный
апостроф для принудительной интерпретации литерала.
Например, следующая команда выдает ошибку, поскольку Windows
PowerShell не распознает escape-символ. Эта команда
интерпретирует вторую кавычку как конец строки.
PS C:\> 'Используйте одиночную кавычку (`') в начале строки.'
Неожиданный токен ")" в выражении или инструкции.
В строке:1 знак:27
+ 'Используйте одиночную кавычку (`') <<<< в начале строки.'
Автономные строки, заключенные в одиночные и двойные кавычки
Правила использования кавычек в автономных строках немного
отличаются.
Автономная строка - это строка, заключенная в одиночные или
двойные кавычки, в которой кавычки интерпретируются буквально.
Автономная строка может состоять из нескольких строк. Все
строки в автономной строке интерпретируются как строки, даже
несмотря на то что они не заключены в кавычки.
В автономных строках, заключенных в двойные кавычки, переменные
заменяются своими значениями подобно регулярным выражениям. В
автономных строках, заключенных в одиночные кавычки, переменные
не заменяются своими значениями.
Автономные строки можно использовать в случае любого текста, но
они являются особенно полезными в случае текста следующих типов.
- Текст, в котором содержатся литералы в кавычках Текст,
- состоящий из нескольких строк, например HTML- или XML-документ
- Текст справки для скрипта или функции
Автономная строка может иметь один из следующих форматов, где
<Ввод> означает перевод строки или скрытый символ новой строки,
который добавляется при нажатии клавиши ВВОД.
Формат 1:
@"<Ввод>
<строка> [строка] ...<Ввод>
"@
Формат 2:
@'<Ввод>
<строка> [строка] ...<Ввод>
'@
В обоих форматах закрывающая кавычка должна быть первым
символом строки.
В автономной строке содержится весь текст между двумя скрытыми
символами.
В автономной строке все кавычки интерпретируются буквально.
Пример:
@"
Для отображения справки введите команду "get-help"
"@
Выходные данные команды:
Для отображения справки введите команду "get-help"
Применение автономной строки позволяет упростить используемую в
команде строку. Пример:
@"
Используйте одиночную кавычку (') в начале строки.
"@
Выходные данные команды:
Используйте одиночную кавычку (') в начале строки.
В автономных строках, заключенных в одиночные кавычки, переменные
интерпретируются буквально и воспроизводятся точно в том виде, в
котором они заданы. Пример:
@'
В переменной $profile содержится путь
к вашему профилю Windows PowerShell.
'@
Выходные данные команды:
В переменной $profile содержится путь
к вашему профилю Windows PowerShell.
В автономных строках, заключенных в двойные кавычки, переменные
заменяются своими значениями. Пример:
@"
Даже если профиль не создан, задан следующий путь к профилю:
$profile.
"@
Выходные данные команды:
Даже если профиль не создан,
задан следующий путь к профилю:
C:\Users\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.
Автономные строки обычно используются для присвоения переменной
значения, состоящего из нескольких строк. Например, следующая
автономная строка позволяет присвоить переменной $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>Форматирует вывод в виде таблицы.</maml:para>
</maml:description>
<command:verb>format</command:verb>
<command:noun>table</command:noun>
<dev:version></dev:version>
</command:details>
...
</command:command>
"@
Автономные строки также являются удобным форматом входных данных для
командлета ConvertFrom-StringData, который преобразует автономные
строки в хэш-таблицы. Дополнительные сведения см. в описании
командлета ConvertFrom-StringData.
СМ. ТАКЖЕ
about_Escape_Characters
ConvertFrom-StringData