Расширение переменной и экранированные символы - PullRequest
7 голосов
/ 05 июля 2011

В PowerShell вы можете расширить переменные внутри строк, как показано ниже:

$myvar = "hello"
$myvar1 = "$myvar`world" #without the `, powershell would look for a variable called $myvarworld
Write-Host $myvar1 #prints helloworld

Проблема, с которой я столкнулся, связана с экранированными символами, такими как n r и т. Д., Как показано ниже:

$myvar3 = "$myvar`albert"
Write-Host $myvar3 #prints hellolbert as `a is an alert 

также не работает следующее:

$myvar2 = "$myvar`frank" #doesnt work
Write-Host $myvar2 #prints hellorank.

Вопрос: Как объединить строки, не беспокоясь о экранированных символах, когда я использую функцию автоматического расширения переменных?Или я должен сделать это только так:

$myvar = "hello"
$myvar1 = "$myvar"+"world" #using +
Write-Host $myvar1
$myvar2 = "$myvar"+"frank" #using +

Ответы [ 5 ]

20 голосов
/ 05 июля 2011

Этот способ еще не упомянут:

"$($myvar)frank"

А это:

"${myvar}frank"
2 голосов
/ 05 июля 2011

Еще один вариант - заключить переменное выражение в $ ():

$myvar3 = "$($myvar)albert"
Write-Host $myvar3 
2 голосов
/ 05 июля 2011

Это выглядит немного глупо, но в качестве другого варианта вы можете добавить пробел и пробел:

$myvar = "hello"
$myvar1 = "$myvar `bworld"
$myvar1
1 голос
/ 05 июля 2011

Другой вариант - строка в двойных кавычках:

$myvar = "Hello"
$myvar2 = @"
$myvar$("frank")
"@
1 голос
/ 05 июля 2011

Еще одна опция - через оператор форматирования:

"{0}world" -f $myvar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...