Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何在PowerShell中提供包含变量值和引号的命令行参数?_Windows_Powershell_Command Line - Fatal编程技术网

Windows 如何在PowerShell中提供包含变量值和引号的命令行参数?

Windows 如何在PowerShell中提供包含变量值和引号的命令行参数?,windows,powershell,command-line,Windows,Powershell,Command Line,在PowerShell中,我想提供一个命令行参数,其中包含文字引号和PowerShell变量值 我知道,但它似乎没有提供一种方法来启用字符串插值,同时也有文字引号未压缩 一个综合例子: 我想从命令行执行这行ruby代码:put“'u'=”。(请注意,这是一个合成示例。我知道我可以在ruby中获取用户名。我知道我可以更改代码,使其实际上不需要双引号。对于这个示例,我希望执行这行代码) 在cmd中,我会这样做: > ruby -e "puts \"'u'=%USERNAME

在PowerShell中,我想提供一个命令行参数,其中包含文字引号和PowerShell变量值

我知道,但它似乎没有提供一种方法来启用字符串插值,同时也有文字引号未压缩

一个综合例子:

我想从命令行执行这行ruby代码:
put“'u'=”
。(请注意,这是一个合成示例。我知道我可以在ruby中获取用户名。我知道我可以更改代码,使其实际上不需要双引号。对于这个示例,我希望执行这行代码)

在cmd中,我会这样做:

> ruby -e "puts \"'u'=%USERNAME%\""
它的工作原理与预期一致

我可以从powershell发送完全相同的参数吗

> ruby -e "puts \"`'u`'=$env:USERNAME\""
不起作用。它失败并生成无效的ruby代码。第一个引语进入,但第二个引语的
\
进入

> ruby -e 'puts \"''u''=$env:USERNAME\"'
不会失败,但$env:USERNAME未展开

甚至可以在单个命令行arg中同时传递文本双引号和变量值吗?

多亏了发布的人,我才想出了一个使用子表达式运算符的解决方案:

> ruby -e "puts $('\"')'u'=$env:USERNAME$('\"')"
使用
$(“\”)
似乎是解决此类问题的最终答案。我不知道为什么没有在其他相关问题中公布