当输入字符串表达式时,可以使用单引号('')或双引号("")括住字符串,但PowerShell解析单引号和双引号中字符串的方式是不同的。
一、单引号括住的字符串,字符串被精确地传递到命令,字符串中包含的任何表达式都不会被计算,只会被解释成文本。例如:
$varA=200
Write-host 'The value of $varA is $varA.'
输出为:
The value of $varA is $varA.
变量$varA不会被相应的值替换。
二、双引号括住的字符串,在字符串传递到命令执行前,变量名会被变量值替代,表达式也会被计算。例如:
例1:
$varA=200
Write-host "The value of $varA is $varA."
输出为:
The value of 200 is 200.
变量$varA相应的值200替换。
例2:
"The value of $(100+100) is 200"
输出为:
The value of 200 is 200.
表达式$(100+100)被计算,并且结果被插入字符串中。
要避免双引号中的字符串被变量值/表达式值替换,需要在变量名/表达式前使用反单引号(`)。例如:
$varA=200
Write-host "The value of `$varA is $varA."
输出为:
The value of $varA is 200.
三、如果字符串使用单引号括起来,同时被括起的字符串中包含单引号,则需使用两个单引号,例如:
'He doesn''t want to go home.'
如果字符串使用双引号括起来,同时被括起的字符串中包含双引号,则需使用两个双引号,例如:
"He said, ""How are you?"""
当然,也可以使用反单引号(`)字符来强制PowerShell将单引号或双引号解释为文本,例如:
"He doesn`'t want to go home."
"He said, `"How are you?`""