为什么" Here Strings"叫" Here Strings"?

时间:2017-01-04 00:39:42

标签: string powershell naming-conventions naming

这个名字背后的原因是什么?

SS64在此解释PowerShell中的字符串如下:

  

此处字符串是单引号或双引号字符串,可以跨越多行。   不评估单引号字符串中的表达式。

     

here-string中的所有行都被解释为字符串,即使它们没有用引号括起来。

$myHereString = @'
some text with "quotes" and variable names $printthis 
some more text 
'@ 

1 个答案:

答案 0 :(得分:12)

它们在PowerShell中有这个名称,因为它是从Unix样式的shell中借用的,就像PowerShell中的许多其他元素和概念一样:

From Wikipedia

  

这里的文档来自Unix shell,可以在sh,csh,ksh,bash和zsh等中找到。

至于为什么最初使用该名称,该文章并未严格涵盖词源,而是基于此描述:

  

在计算方面,此处文档此处为文档此处为文本 heredoc hereis here-string here-script )是文件文字或输入流文字:它是被处理的源代码文件的一部分好像它是一个单独的文件。该术语还用于使用类似语法的多行字符串文字形式,在文本中保留换行符和其他空格(包括缩进)。

"这里"似乎合情合理。名称的一部分是指包含的文件"这里" (如此,此时)。

为了完整起见,值得注意的是,PowerShell还直接在单引号和双引号[string]中支持换行符,如下所示:

$myString = 'some text with "quotes" and variable names $printthis 
some more text'

here-string有用的一个更好的例子是当你需要两种类型的引号时:

$myHereString = @'
some text with "quotes" and variable names $printthis 
some more text 
and my grandma's soup
'@ 

如果只是一个带引号的字符串,'中的grandma's将需要转义。

如果是双引号字符串,则您需要转义" 的实例,您需要转义$如果你没有想要变量扩展。