本文内容的简单描述
描述在 中使用单引号和双引号的规则。
详细描述
引号用于指定文本字符串。 字符串可以用单引号 () ' 或双引号 (") 括起来。
引号也用于在此处创建字符串。 这里的字符串是单引号或双引号字符串,其中引号按字面解释。 这里的字符串可以跨越多行。 此处 中的所有行都被解释为字符串,即使它们没有用引号引起来。
在远程计算机的命令中,引号定义在远程计算机上运行的命令部分。 在远程会话中,引号还确定命令中的变量是首先在本地计算机还是远程计算机上解释。
双引号字符串
用双引号括起来的字符串是可扩展字符串。 ) (在将字符串传递给命令进行处理之前,以美元符号 $ 开头的变量名称将替换为变量的值。
例如:
$i = 5
"The value of $i is $i."
该命令的输出是:
The value of 5 is 5.
此外,在双引号字符串中,计算表达式,并将结果插入到字符串中。 例如:
"The value of $(2+3) is 5."
该命令的输出是:
The value of 5 is 5.
只有简单的变量引用可以直接嵌入可扩展字符串中。 使用数组索引或成员访问的变量引用必须包含在子表达式中。 例如:
"PS version: $($PSVersionTable.PSVersion)"
PS version: 7.2.0
要将变量名称与字符串中的后续字符分开,请将其括在大括号 ({}) 中。 如果变量名后面跟着冒号 ():,这一点尤其重要。 范围 $ 说明符和 : 范围说明符之间的所有内容都会被考虑在内,这通常会导致解释失败。 例如,“$HOME:心脏所在的位置”。 抛出一个错误,但是“${HOME}:心脏在哪里。” 按预期工作。
为了防止变量值在双引号字符串中被替换,请使用反引号字符 (`),即转义字符。
在以下示例中,第一个 $i 变量前面的反引号字符可防止用变量名称替换其值。 例如:
$i = 5
"The value of `$i is $i."
该命令的输出是:
The value of $i is 5.
单引号字符串
用单引号括起来的字符串是逐字字符串。 键入时,字符串将完整地传递给命令。 不进行更换。 例如:
$i = 5
'The value of $i is $i.'
该命令的输出是:
The value $i is $i.
同样,单引号字符串中的表达式也不会被求值。 它们被解释为字符串文字。 例如:
'The value of $(2+3) is 5.'
该命令的输出是:
The value of $(2+3) is 5.
在字符串中包含引号字符
要使双引号出现在字符串中,请将整个字符串用单引号引起来。 例如:
'As they say, "live and learn."'
该命令的输出是:
As they say, "live and learn."
您还可以将单引号字符串括在双引号字符串内。 例如:
"As they say, 'live and learn.'"
该命令的输出是:
As they say, 'live and learn.'
或者,在双引号短语周围加上双引号。 例如:
"As they say, ""live and learn."""
该命令的输出是:
As they say, "live and learn."
要在单引号字符串中包含单引号,请使用第二个连续的单引号。 例如:
'don''t'
该命令的输出是:
don't
要强制按字面解释双引号,请使用反引号字符。 这可以防止引号被解释为字符串分隔符。 例如:
"Use a quotation mark (`") to begin a string."
'Use a quotation mark (`") to begin a string.'
由于单引号字符串的内容按字面解释,因此反引号字符将被视为字面字符并显示在输出中。
Use a quotation mark (") to begin a string.
Use a quotation mark (`") to begin a string.
这里-
这里字符串的引用规则略有不同。
这里- 是一个由 () @ 符号包围的单引号或双引号字符串。 此处字符串中的引号按字面意思解释。
这里-:
与常规字符串一样,变量在这里被双引号中的值替换。 在单引号中,变量不会被其值替换。
您可以将此处 - 与任何文本一起使用,但它们对于以下类型的文本特别有用:
这里- 可以有以下格式之一,表示按下 Enter 键时添加的换行符或换行符隐藏字符。
双引号:
@"
[string] ...
"@
撇号:
@'
[string] ...
'@
注意
最后一个换行符是结束标记的一部分。 这里就不补充了-。
这里的字符串包含开始标签和结束标签之间的所有文本。 在这里-,所有引号均按字面意思解释。 例如:
@"
For help, type "get-help"
"@
该命令的输出是:
For help, type "get-help"
使用here-可以简化命令中字符串的使用。 例如:
@"
Use a quotation mark (') to begin a string.
"@
该命令的输出是:
Use a quotation mark (') to begin a string.
在单引号中,变量按字面解释并准确再现。 例如:
@'
The $profile variable contains the path
of your PowerShell profile.
'@
该命令的输出是:
The $profile variable contains the path
of your PowerShell profile.
在双引号内,变量将被其值替换。 例如:
@"
Even if you have not created a profile,
the path of the profile file is:
$profile.
"@
该命令的输出是:
Even if you have not created a profile,
the path of the profile file is:
C:\Users\User1\documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.
这里 - 通常用于将多行分配给一个变量。 例如,下面将 XML 页面分配给 $page 变量。
$page = [XML] @"
Format-Table
cription>
Formats the output as a table.
cription>
format
table
...
"@
Here- 也是一种方便的输入格式,用于将此处字符串转换为哈希表。 详情请参阅-。
注意
允许双引号或单引号字符串跨越多行,而不使用 @here- 语法。 然而,完整的here-语法是首选用法。
可扩展字符串的解释
扩展的字符串不一定与控制台中看到的默认输出相同。
通过在元素的字符串表示形式之间放置空格,集合(包括数组)将转换为字符串。 可以通过设置首选项变量 $OFS 来指定不同的分隔符。 详情请参阅。
通过调用可能无法提供有意义的表示的方法 () 将任何其他类型的实例转换为字符串。 例如:
"hashtable: $(@{ key = 'value' })"
hashtable: System.Collections.Hashtable
要获得与控制台中相同的输出,请使用通过管道传输到 Out- 的子表达式。 如果要删除任何前导和尾随空白行,请应用 Trim() 方法。
"hashtable:`n$((@{ key = 'value' } | Out-String).Trim())"
hashtable:
Name Value
---- -----
key value
将带引号的字符串传递给外部命令
某些本机命令需要包含引号字符的参数。 在将带引号的字符串传递给外部命令之前对其进行解释。 此解释删除了外部引号字符。
有关此行为的更多信息,请参阅本文。
也可以看看