从PowerShell中使用堆栈,我怎么通过测试的参数,其中包括一个空间?

问题描述 投票:2回答:1

我需要通过字符串“登录失败”作为一道爽口模式参数运行可口测试出栈的时候。

这是很简单的在bash:

PS C:\Pyrethrum> stack test --fast --ta "-p \"fail log\""

但是,试图实现使用PowerShell同样是驾驶我坚果:


PS C:\Pyrethrum> stack test --fast --ta "-p ""fail"" "

作品(运行测试)时,有没有空间


PS C:\Pyrethrum> stack test --fast --ta "-p ""fail log"" "

错误分析目标:找不到目录:登录


PS C:\Pyrethrum> stack test --fast --ta "-p `"fail log`""

尝试安装一个叫做日志包


PS C:\Pyrethrum> stack test --fast --ta "-p \"fail log\""

选项--ta:未结束的字符串:endOfInput


PS C:\Pyrethrum> stack test --fast --ta "-p /fail log/ "

......构建但模式需要报价

除虫菊-0.1.0.0:测试(套房:除虫菊检验,ARGS:-p /失败日志/)

-p选项:无法解析模式


正确的命令行得到这个在PowerShell中运行的是什么?

powershell haskell command-line-arguments haskell-stack
1个回答
3
投票

不幸的是,PowerShell的参数传递给外部程序的方式被打破,需要你不只是满足PowerShell的关于自己的语法要求嵌入式",而是另外逃脱他们的目标可执行文件,通常与\

 # `" is needed for PowerShell, \ is needed for stack
 stack test --fast --ta "-p \`"fail log\`""

由于您的外"..."字符串没有引用任何PowerShell的变数和不包含的子表达式,即,由于不需要串插,可以使用'...',文字PowerShell的字符串,而不是,它简化事项位:

 stack test --fast --ta '-p \"fail log\"'

简而言之:为了通过嵌在一个参数从PowerShell的外部程序"字符:

  • 使用\`""..."
  • 使用\"'...'

this GitHub issue了解详情。

© www.soinside.com 2019 - 2024. All rights reserved.