什么是cmd / powershell相当于bash中的反引号?

时间:2009-01-11 23:40:23

标签: bash powershell cmd

重定向命令输出:

例如:

echo "Foo `./print_5_As.rb`"

会回应“Foo AAAAA”

3 个答案:

答案 0 :(得分:124)

PowerShell语法基于POSIX ksh语法 (有趣的是,任何微软的语言 像CMD.EXE,VBScript或Visual Basic for Applications), 这么多的东西和Bash一样工作。在 你的情况,命令替换是用

完成的
echo "Foo $(./print_5_As.rb)"
PowerShell和Bash中的

Bash仍然支持古老的方式(反叛),但是 PowerShell清理了语法并删除了冗余 构造如两个不同的命令替换 语法。这可以释放不同的反引号 在PowerShell中使用:在POSIX ksh中,反斜杠用作 逃避角色,但那将是非常痛苦的 PowerShell因为反斜杠是传统的路径 Windows中的组件分隔符。所以,PowerShell使用了 (现在未使用)用于逃避的反击。

答案 1 :(得分:25)

在CMD.EXE中没有直接的等价物。但是你可以使用FOR命令来实现你想要的。

执行以下操作:

FOR /F "usebackq" %x IN (`./print_5_As.rb`) DO @echo Foo %x

FOR /F %x IN ('"./print_5_As.rb"') DO @echo Foo %x

您可能需要将分隔符设置为默认值以外的其他值,具体取决于输出的外观以及您希望如何使用它。有关详细信息,请参阅https://technet.microsoft.com/en-us/library/bb490909.aspx

上的FOR文档

答案 2 :(得分:21)

在Powershell中,您使用$()来评估子表达式......

例如:

PS C:\> "Foo $(./print_5_As.rb)"
Foo AAAAA
相关问题