在PowerShell中,很少有程序以@'
开头,以'@
结尾,但是当我键入@'
并在PowerShell提示符下按Enter键时会抛出错误。任何人都可以解释我怎么能这样做?
答案 0 :(得分:6)
@'...'@
和@"..."@
是" Here Strings" (记录在about_quoting_rules中):
下面-STRINGS
here-strings的引用规则略有不同。
here-string是单引号或双引号的字符串 哪个引号按字面解释。 here-string可以 跨越多行。解释了here-string中的所有行 作为字符串,即使它们没有用引号括起来。
与常规字符串一样,变量将被其值替换 双引号 - 字符串。在单引号中的字符串,变量 没有被他们的价值取代。
您可以将here-strings用于任何文本,但它们尤其如此 适用于以下类型的文本:
-- Text that contains literal quotation marks -- Multiple lines of text, such as the text in an HTML or XML document -- The Help text for a script or function
here-string可以具有以下格式之一,其中 表示在添加时添加的换行符或换行符隐藏字符 按ENTER键。
双引号:
@"<Enter> <string> [string] ...<Enter> "@
单引号:
@'<Enter> <string> [string] ...<Enter> '@
在任何一种格式中,右引号必须是第一个字符 在线。
here-string包含两个隐藏字符之间的所有文本。 在here-string中,所有引号都按字面解释。 例如:
@" For help, type "get-help" "@
此命令的输出为:
For help, type "get-help"
使用here-string可以简化在命令中使用字符串。对于 例如:
@" Use a quotation mark (') to begin a string. "@
此命令的输出为:
Use a quotation mark (') to begin a string.
在单引号here-strings中,变量按字面解释 完全转载。例如:
@' The $profile variable contains the path of your Windows PowerShell profile. '@
此命令的输出为:
The $profile variable contains the path of your Windows PowerShell profile.
在双引号here-strings中,变量被其值替换。 例如:
@" 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\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.
Here-字符串通常用于指定多行 一个变量。例如,以下here-string指定一个 XML页面到$ page变量。
$page = [XML] @" <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10"> <command:details> <command:name> Format-Table </command:name> <maml:description> <maml:para>Formats the output as a table.</maml:para> </maml:description> <command:verb>format</command:verb> <command:noun>table</command:noun> <dev:version></dev:version> </command:details> ... </command:command> "@
Here-字符串也是一种方便的输入格式 ConvertFrom-StringData cmdlet,它将here-strings转换为hash 表。有关更多信息,请参阅ConvertFrom-StringData。
答案 1 :(得分:2)
@'
和'@
标记Here-String的开头和结尾。在PowerShell控制台中键入@'
然后按 Enter 通常会为您提供行继续提示(>>
):
PS C:> @'
>> _
如果您收到错误,则很可能没有输入单个(或双重)报价,而是输入正向或反向或某种印刷报价。如果是这样的话,你应该得到一个&#34;无法识别的令牌&#34;像这样的错误:
PS C:\> @´
At line:1 char:1
+ @´
+ ~
Unrecognized token in source text.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnrecognizedToken