gpt4 book ai didi

powershell - Powershell 中的 Bash/batch-like subshel​​l

转载 作者:行者123 更新时间:2023-12-04 04:29:12 25 4
gpt4 key购买 nike

在 Unix shell 中,你可以这样写:

( cmd1 ; cmd2 ) | cmd3

在 Windows Batch 中,你可以这样写
( cmd1 & cmd2 ) | cmd3

在这两种情况下,cmd1 和 cmd2 的输出都通过 stdin 传递给 cmd3。

是否可以在 Powershell 中执行相同操作?

我还没有找到允许这样做的有效语法。我希望语句块像这样工作,但它没有:
{ cmd1 ; cmd2 } | cmd3

我可以通过声明一个函数来让它工作:
function f() {
cmd1
cmd2
}
f | cmd3

是否有允许在线完成此操作的语法?

最佳答案

您可以直接调用 powershell 以生成真正的子 shell (即子 shell 不会修改 shell 的状态):

pwsh -Command { cmd1 ; cmd2 } | cmd3
由于 powershell 将对象而不只是字符串作为输入, -Command参数可以采用脚本块。请注意,如果您尝试写入不成功的 nom-error 流(例如 Write-Host),则会出现一些奇怪的行为。 .如果您遇到这些问题,我发现最简单的方法是使用保存所有相关状态的函数来模拟子 shell,并使用 Invoke-Command 执行其参数。或 & ,然后恢复状态。

关于powershell - Powershell 中的 Bash/batch-like subshel​​l,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44281699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com