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 if
instruçã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