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

标签 windows powershell command-line

在 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/

相关文章:

windows - 检测路径是否在 Windows 映射网络驱动器上

c# - 重命名文件Powershell看不到

Python:响应命令行提示

powershell - 为什么这个 do/until 循环以 1 开始的值退出?

xml - PowerShell 设置 XML 值#text

android - 从适用于 Android 的 FFMPEG 命令行版本访问网络摄像头麦克风

node.js - 清除 NodeJS REPL 控制台的命令历史记录

windows - 从 Windows 8.1 (NSIS) 中的安装程序获取开始屏幕上的快捷方式

node.js - 如果 Node 5 已安装在 Windows 上,如何安装 Node 4 版本

windows - 如何在批处理文件中生成输出文件的自动编号?