PowerShell: 单引号字符串和双引号字符串的区别

当输入字符串表达式时,可以使用单引号('')或双引号("")括住字符串,但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?`""

原文地址:https://www.cnblogs.com/ITGirlXiaoXiao/p/2659874.html