重定向命令输出:
例如:
echo "Foo `./print_5_As.rb`"
会回应“Foo AAAAA”
答案 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