Всем привет.
В процессе написания кода был вынужден еще раз вернуться к... кавычкам в Powershell.
Итак, одинарными кавычками ' ' в Powershell выделяют нерасширяемые строки. В таких строках не действуют escape-последовательности и не происходит подстановка значений переменных.
Двойные кавычки " " используются для создания расширяемых строк. Если внутри такой строки встречается имя переменной или другое выражение, которое может быть вычислено, то в строку подставляется значение данной переменной или результат вычисления выражения. Также в расширяемых строках действуют escape-последовательности. Например, если в переменной $name хранится слово ’’Иван”, то в переменной $hello = "Привет, $паше! `n" будет записана строка ’Привет, Иван!’ и символ перевода строки.
Знак ` (обратный апостроф или гравис) является в PowerShell экранирующим символом. Внутри строки в двойных кавычках обратный апостроф задает escape-последовательность (например, `n означает перевод строки). Использова ние его перед пробелом внутри параметров команды позволяет не указывать кавычки для путей к файлам или каталогам, содержащим пробелы (например, cd C:\Program Files). Если обратный апостроф является последним символом в командной строке, то ввод команды продолжается со следующей строки (это позволяет выполнять в PowerShell многострочные команды). По сути гравис не является кавычкой как таковой, но его укажем тоже.
Ок, а теперь наглядные примеры по всем трем видам:
Clear-Host
Write-Host '1)'
Write-Host "String text"
Write-Host 'String text'
Результат работы скрипта:
1)
String text
String text




