使用Powershell中的堆栈,如何传递包含空格的测试参数?
在堆栈外运行美味测试时,我需要将字符串“faillog”作为美味模式参数传递 在bash中,这是非常直接的:使用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”失败日志“ 分析目标时出错:未找到目录:日志
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参数重复。