在 PowerShell 中,我想提供一个命令行参数,其中包含文字引号加上 PowerShell 变量值。
我知道this question and its answers ,但它似乎没有提供一种方法来启用字符串插值,同时也未删除文字引号。
综合示例:
我想从命令行执行这行 ruby 代码:puts "'u'=<my-user-provided-from-the-shell>"
。 (提醒一下,这是一个综合示例。我知道我可以在 ruby 中获取用户名。我知道我可以更改代码,因此它实际上不需要双引号。对于这个示例,我想执行这行代码)
在cmd中,我会这样做:
> ruby -e "puts \"'u'=%USERNAME%\""
它按预期工作。
我可以以某种方式从 powershell 发送完全相同的参数吗?
> ruby -e "puts \"`'u`'=$env:USERNAME\""
不起作用。它失败并产生无效的 ruby 代码。第一个引用成功了,但是 \
从第二个进去
> ruby -e 'puts \"''u''=$env:USERNAME\"'
不会失败,但 $env:USERNAME 未展开。
是否可以在单个命令行参数中同时传递文字双引号和变量值?
最佳答案
感谢Abra谁发帖 this link我能够想出一个使用子表达式运算符的解决方案:
> ruby -e "puts $('\"')'u'=$env:USERNAME$('\"')"
使用 $('\"')
看起来像是此类问题的明确答案。我不知道为什么它没有发布在其他相关问题中。
关于windows - 如何在 PowerShell 中提供包含变量值和引号的命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65840948/