Substituições para E comercial e E comercial duplo no PowerShell

Substituições para E comercial e E comercial duplo no PowerShell

No processador CMD nativo do Windows, você pode usar &comandos para encadear comandos para que um seja executado imediatamente após o outro. A &&executará o segundo comando somente se o primeiro for concluído sem erros.

Isso é diferente dos comandos de tubulação e |na saída do primeiro comandonão éenviado para o segundo comando, os comandos são simplesmente executados um após o outro e a saída de cada um é enviada para seu local habitual.

No entanto, recebo um erro quando tento usar &ou &&no PowerShell. Existem funções semelhantes disponíveis no PowerShell ou esse recurso está obsoleto?

Responder1

O &operador no PowerShell é apenas ou ;ponto e vírgula.

O &&operador no PowerShell deve ser executado como uma ifinstrução.

Command ; if($?) {Command}

Exemplo:

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

Responder2

Experimente esta função, que pode ser usada aproximadamente da mesma maneira:

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

Agora &&pode ser substituído por ; aa, que embora ainda não seja perfeito, é muito mais sucinto.

cls && build

torna-se

cls; aa build

Responder3

Atualização: agora é possível fazer isso nativamente com Powershell 7

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

Primeiro
segundo

Mas se o primeiro comando falhar (observe aqui Write-Error):

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

Ruim

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

informação relacionada