PowerShell 中“&”符号和双“&”符号的替换

PowerShell 中“&”符号和双“&”符号的替换

在 Windows 的原生 CMD 处理器中,您可以使用&将命令串在一起,以便一个命令在另一个命令之后立即运行。&&只有当第一个命令完成且没有错误时,A 才会运行第二个命令。

这与管道命令以及|第一个命令的输出不同不是发送到第二个命令,命令只是简单地一个接一个地运行,并且每个命令的输出都被发送到其通常的位置。

但是,当我尝试在 PowerShell 中使用&或时,出现错误。PowerShell 中是否有类似的功能,或者此功能是否已被弃用?&&

答案1

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

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

Command ; if($?) {Command}

例子:

tsc ; if($?) {node dist/run.js}

答案2

尝试一下这个函数,其使用方式大致相同:

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

现在&&可以用 来代替; aa,虽然还不完美,但却更加简洁。

cls && build

变成

cls; aa build

答案3

更新:现在可以使用 Powershell 7 本地执行此操作

Write-Output 'First' && Write-Output 'Second'

第一

但是如果第一个命令失败(这里注意Write-Error):

Write-Error 'Bad' && Write-Output 'Second'

坏的

来源 :https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_pipeline_chain_operators?view=powershell-7.3

相关内容