【问题标题】:Can you use powershell 'here string' in a ps shell window or only scripts?您可以在 ps shell 窗口或仅脚本中使用 powershell 'here string' 吗?
【发布时间】:2018-06-14 19:42:38
【问题描述】:

我刚学powershell,想在shell窗口设置一个多行here字符串,输入:

$hs = @" 

此时我按回车键,而不是让我继续添加到这里的字符串,我得到了错误:

字符串缺少终止符:“@. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

这是有道理的,但我确信我已经看到了似乎是在 ps 命令提示符下构造的字符串示例。这是可行的还是这里的字符串仅适用于脚本?

【问题讨论】:

  • 什么版本的powershell?我无法重现这个。
  • 你用的是什么主机?在 ISE 中你需要使用Shift+Enter 来编写多行命令。
  • Shift+Enter 也适用于控制台版本(虽然使用 PSReadline 模块的体验会更好,它可以让您编辑之前的行)。

标签: powershell


【解决方案1】:
$hs = @'
Test
'@

这应该可以在控制台或脚本中使用。

顺便说一句,单引号字符串是文字,不扩展变量。他们只是从字面上输出变量名。

双引号字符串是扩展字符串,会扩展变量(显示它们的值)。

你可以玩这个。

$testVariable = "test variable content"

$stringLiteral = @'
line 1
 line 2
  line 3
   $testVariable
    line 5
'@

$expandingString = @"
line 1
 line 2
  line 3
   $testVariable
    line 5
"@

"String Literal:  "
$stringLiteral 


"Expanding String:  "
$expandingString

【讨论】:

  • 这并不试图回答 OP 的问题
  • @JacobColvin 他的帖子标题询问这里的字符串是在 shell 中工作还是仅在脚本中工作。我的回答“这应该在控制台或脚本中工作”怎么不能回答这个问题?
  • 想象一下我发帖:Command-Name 给了我这个例外,为什么?你回答,“试试使用命令名”。 OP 在使用多行字符串时遇到问题,您的回答告诉他“尝试使用多行字符串”。帖子上的cmets回答了这个问题。
  • 艰难的人群。我认为这篇文章是多个问题。我回答了其中之一。另一个已经在您提到的 cmets 中得到了回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 2020-05-27
  • 1970-01-01
  • 2017-09-18
相关资源
最近更新 更多