使用 Powershell 中的 Stack,如何传递包含 space 的测试参数?
Using Stack from Powershell, how do I pass test arguments that include a space?
当 运行ning tasty 测试出栈时,我需要将字符串 "fail log" 作为 tasty 模式参数传递。
这在 bash 中非常简单:
PS C:\Pyrethrum> stack test --fast --ta "-p \"fail log\""
但是尝试使用 Powershell 实现同样的效果让我抓狂:
PS C:\Pyrethrum> stack test --fast --ta "-p ""fail"" "
在没有 space
时有效(运行s 测试)
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/ "
...构建但模式需要引号
pyrethrum-0.1.0.0:测试(套件:pyrethrum-test,参数:-p /fail log/)
选项 -p:无法解析模式
在 Powershell 中将此设置为 运行 的正确命令行是什么?
不幸的是,PowerShell 向外部程序传递参数的方式至少在 PowerShell 7.2.x 中被分解,并且要求您不仅满足 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:
- 在
"..."
中使用\`"
- 在
'...'
中使用\"
有关详细信息,请参阅 ,还有关于 未来可能的修复程序 和隐藏错误的辅助函数。
当 运行ning tasty 测试出栈时,我需要将字符串 "fail log" 作为 tasty 模式参数传递。
这在 bash 中非常简单:
PS C:\Pyrethrum> stack test --fast --ta "-p \"fail log\""
但是尝试使用 Powershell 实现同样的效果让我抓狂:
PS C:\Pyrethrum> stack test --fast --ta "-p ""fail"" "
在没有 space
时有效(运行s 测试)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/ "
...构建但模式需要引号
pyrethrum-0.1.0.0:测试(套件:pyrethrum-test,参数:-p /fail log/)
选项 -p:无法解析模式
在 Powershell 中将此设置为 运行 的正确命令行是什么?
不幸的是,PowerShell 向外部程序传递参数的方式至少在 PowerShell 7.2.x 中被分解,并且要求您不仅满足 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:
- 在
"..."
中使用 - 在
'...'
中使用
\`"
\"
有关详细信息,请参阅