在PowerShell中替换与号和双与号


28

在Windows的本机CMD处理器中,您可以用来&将命令串在一起,以便一个命令紧接着另一个命令运行。&&仅当第一个命令没有错误完成时,A 才会运行第二个命令。

这与管道命令的区别|在于,第一个命令的输出不会发送到第二个命令,这些命令只是一个接一个地运行,每个命令的输出都发送到通常的位置。

但是,在尝试使用&&&在PowerShell中时出现错误。PowerShell中是否有可用的类似功能,或者不建议使用此功能?



一个有趣的问题是,是否可以使用powershell的元编程通过以下方式提供此功能&&
soandos,2012年

Answers:


35

&PowerShell中的运算符只是;或分号。

&&PowerShell中的运算符必须作为if语句运行。

Command ; if($?) {Command}


1

尝试使用此功能,大致可以使用相同的方法:

function aa() {
    if($?) {
        $command = [string]::join(' ', $args[1..99])
        & $args[0] $command
    }
}

现在&&可以替换为; aa,虽然仍然不够完美,但更加简洁。

cls && build

变成

cls; aa build

1
是否使用非样式风格的原因,args[0]而不是function aa ($cmd)
鲁芬2014年

这是一种调用命令的易碎方法。使用脚本块来传递命令,并使用.而不是调用它们&,因为后者会为变量创建子作用域。
mklement0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.