使用Powershell中的堆栈,如何传递包含空格的测试参数?

使用Powershell中的堆栈,如何传递包含空格的测试参数?,powershell,haskell,command-line-arguments,haskell-stack,Powershell,Haskell,Command Line Arguments,Haskell Stack,在堆栈外运行美味测试时,我需要将字符串“faillog”作为美味模式参数传递 在bash中,这是非常直接的: PS C:\Pyrethrum>堆栈测试--fast--ta“-p\“失败日志\ 但尝试使用Powershell实现同样的目标让我抓狂: PS C:\Pyrethrum>stack test--fast--ta“-p”“fail”“ 没有空间时工作(运行测试) PS C:\Pyrethrum>stack test--fast--ta“-p”失败日志“ 分析目标时出错:未找到目录:日志

在堆栈外运行美味测试时,我需要将字符串“faillog”作为美味模式参数传递

在bash中,这是非常直接的:

PS C:\Pyrethrum>堆栈测试--fast--ta“-p\“失败日志\

但尝试使用Powershell实现同样的目标让我抓狂:


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

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


PS C:\Pyrethrum>stack test--fast--ta“-p”失败日志“

分析目标时出错:未找到目录:日志


PS C:\Pyrethrum>stack test--fast--ta“-p`“失败日志”

尝试安装名为log的包


PS C:\Pyrethrum>堆栈测试--fast--ta“-p\“失败日志\

选项--ta:未终止字符串:endOfInput


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

。。。但模式需要引用

除虫菊-0.1.0.0:测试(套件:除虫菊测试,参数:-p/失败日志/)

选项-p:无法分析模式



在Powershell中运行此命令的正确命令行是什么?

不幸的是,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传递到外部程序,请执行以下操作:

  • “…”
  • 使用
    \“
    内部
    '…'

有关详细信息,请参阅。

数组中可能存在的pass参数重复。