Joh*_*ker 3 powershell haskell command-line-arguments haskell-stack
在堆栈外运行美味测试时,我需要将字符串“失败日志”作为美味模式参数传递。
这在 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`""
尝试安装一个名为 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:测试(套件:除虫菊测试,参数:-p /失败日志/)
选项-p:无法解析模式
让它在 Powershell 中运行的正确命令行是什么?
不幸的是,PowerShell 将参数传递给外部程序的方式至少在 PowerShell 7.2.x 中被打破,并且要求您不仅要满足 PowerShell自己的有关嵌入的语法要求",还要为目标可执行文件另外\转义它们,通常使用:
# `" is needed for PowerShell, \ is needed for stack
stack test --fast --ta "-p \`"fail log\`""
Run Code Online (Sandbox Code Playgroud)
由于外部"..."字符串不引用 PowerShell 变量且不包含子表达式,即,由于不需要字符串插值,因此您可以使用 a '...',即文字 PowerShell 字符串,这会稍微简化问题:
stack test --fast --ta '-p \"fail log\"'
Run Code Online (Sandbox Code Playgroud)
简而言之:要将参数中嵌入的字符从 PowerShell传递给外部程序":
\`"在里面使用"..."\"在里面使用'...'有关详细信息,请参阅此答案,以及有关未来潜在修复和隐藏错误的辅助函数的信息。
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |