如何在 PowerShell 中提供包含变量值和引号的命令行参数?
How to provide a command line argument containing a variable value and quotation marks in PowerShell?
在 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 没有扩展。
甚至可以在单个命令行参数中同时传递文字双引号和变量值吗?
在 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 没有扩展。
甚至可以在单个命令行参数中同时传递文字双引号和变量值吗?