String 为什么是;这里是字符串“;称为;这里是字符串“;?

String 为什么是;这里是字符串“;称为;这里是字符串“;?,string,powershell,naming-conventions,naming,String,Powershell,Naming Conventions,Naming,这个名字背后的原因是什么 下面解释PowerShell中的字符串,如下所示: 此处的字符串是可以跨多行的单引号或双引号字符串。 不计算单引号字符串中的表达式 here字符串中的所有行都被解释为字符串,即使它们没有用引号括起来 $myHereString = @' some text with "quotes" and variable names $printthis some more text '@ 它们在PowerShell中使用此名称,因为它与PowerShe

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

下面解释PowerShell中的字符串,如下所示:

此处的字符串是可以跨多行的单引号或双引号字符串。 不计算单引号字符串中的表达式

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

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

它们在PowerShell中使用此名称,因为它与PowerShell中的许多其他元素和概念一样,是从Unix样式的shell中借用的:

:

这里的文档起源于unixshell,可以在sh、csh、ksh、bash和zsh等中找到

至于最初使用该名称的原因,本文并未严格涵盖词源,而是基于以下描述:

在计算技术中,此处文档此处文档此处文本heredoc此处此处字符串此处脚本)是文件文本或输入流文本:它是源代码文件的一部分,被视为一个单独的文件。该术语还用于一种使用类似语法的多行字符串文本形式,在文本中保留换行符和其他空白(包括缩进)

名称的“here”部分指的是包含在“here”中的文件,这似乎是合乎逻辑的


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

$myString = 'some text with "quotes" and variable names $printthis 
some more text'
当您需要两种类型的引号时,此处字符串更有用:

$myHereString = @'
some text with "quotes" and variable names $printthis 
some more text 
and my grandma's soup
'@ 
如果那只是一个带引号的字符串,则需要转义
奶奶的
中的
'

如果是双引号字符串,则需要转义
的实例,如果不希望变量展开,则需要转义
$



有趣的是:此处字符串的解释方式之间的差异构成了(其内容可以在任何环境中执行的脚本)的基础.

此外,在here字符串中,不包括初始换行符,这与使用常规字符串的方式不同。marsze这是真的,在here字符串实现中也有所不同!我添加了一个链接,指向一个有趣的github repo,通过创建多语言脚本显示了这一点。没有办法使用像EOF这样的关键字来代替q吗uotes,这样就可以避免转义引号了?