当前位置:  开发笔记 > 编程语言 > 正文

什么是cmd/powershell相当于bash上的后退?

如何解决《什么是cmd/powershell相当于bash上的后退?》经验,为你挑选了3个好方法。

重定向命令输出:

例如:

echo "Foo `./print_5_As.rb`"

会回应"Foo AAAAA"



1> Jörg W Mitta..:

PowerShell语法基于POSIX ksh语法(有趣的是没有任何Microsoft的语言,如CMD.EXE,VBScript或Visual Basic for Applications),因此很多东西的工作方式与Bash完全相同.在您的情况下,命令替换完成

echo "Foo $(./print_5_As.rb)"

在PowerShell和Bash中.

Bash仍然支持古老的方式(反引号),但PowerShell清理了语法并删除了冗余结构,例如两种不同的命令替换语法.这为 PowerShell中的不同用法释放了反引号:在POSIX ksh中,反斜杠用作转义字符,但这在PowerShell 中会非常痛苦,因为反斜杠是Windows中的传统路径组件分隔符.因此,PowerShell使用(现在未使用的)反引号进行转义.


这是很好的阅读答案,你可以了解事情的方式和原因.谢谢!(如果可以,我会做+10.)

2> matli..:

在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

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


哦,这么累赘:(
@jordanpg,你似乎错过了在这种情况下FOR不用于循环的观点.bash等价物仍然与原始帖子相同,没有任何for循环.
繁琐,不像它的超级优雅的bash等价:`for x in \`./print_5_As.rb \`; 做echo%x; done`

3> 小智..:

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

例如:

PS C:\> "Foo $(./print_5_As.rb)"
Foo AAAAA

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有