在powershell中定义字符串的单引号和双引号之间有什么区别

Dav*_*ing 22 powershell

一直困扰我的简单问题:在powershell中,我可以像这样定义字符串:

$s1 = "Boogety boo"
Run Code Online (Sandbox Code Playgroud)

要么

$s2 = '.net rocks'
Run Code Online (Sandbox Code Playgroud)

口译员有区别吗?

ont*_*ia_ 27

双引号允许变量扩展,而单引号则不允许:

PS C:\Users\Administrator> $mycolor="red"
PS C:\Users\Administrator> write-output -inputobject 'My favorite color is $mycolor'
My favorite color is $mycolor
Run Code Online (Sandbox Code Playgroud)

资料来源:http://www.techotopia.com/index.php/Windows_PowerShell_1.0_String_Quoting_and_Escape_Sequences

(我知道版本1.0但原理仍然相同)


lit*_*lit 8

这并不是要成为更好的答案。只是另一种说法。

撇号和引号之间的变量扩展与 UNIX shell(sh、ksh、bash)上的相同。使用撇号将按原样使用字符串,不处理任何转义。

PS C:\Users\lit> $x = "`t"
PS C:\Users\lit> $x

PS C:\Users\lit> Write-Output "now${x}is"
now     is
PS C:\Users\lit> $x = '`t'
PS C:\Users\lit> $x
`t
PS C:\Users\lit> Write-Output "now${x}is"
now`tis
PS C:\Users\lit> $word = "easy"
PS C:\Users\lit> "PowerShell is $word"
PowerShell is easy
PS C:\Users\lit> 'PowerShell is $word'
PowerShell is $word
Run Code Online (Sandbox Code Playgroud)