cmd1 && cmd2 && cmd3
pode ser escrito em várias linhas, como
cmd1
if not errorlevel 1 cmd2
if not errorlevel 1 cmd3
onde a execução de cada comando dependerá do resultado do anterior
Eu vejo que este operador é usado no Windows (e pode ser o Linux?) para encadear / combinar vários comandos em uma linha. Os comandos são executados um após o outro, desde que o precedente seja concluído com sucesso (código de saída 0).
No entanto, eu não entendo se ele pode ser usado em arquivo de lote, onde você especifica comandos um após o outro, um comando por linha. Como você consegue o mesmo efeito neste caso? Como você divide o cmd1 && cmd2 && cmd3
em várias linhas ? Como você termina
cmd1
cmd2
cmd3
assim que o primeiro comando falhar?
Eu também gostaria de saber o nome do operador para encontrar a resposta para perguntas como esta mais tarde.
No GNU / Linux, posso dividir o comando cmd1 && cmd2 && cmd3
em várias linhas (por exemplo, para legibilidade) em um arquivo de script como este:
cmd1 &&
cmd2 &&
cmd3
A diferença entre eles é:
cmd1
cmd2
cmd3
irá disparar cada comando individualmente e permite o término do trabalho em lote se você pressionar Ctrl + c antes que um termine.
Onde
cmd1 && cmd2 && cmd3
iniciará os comandos um após o outro, mas sem olhar o script / de uma só vez.
Por exemplo,
Tome o primeiro exemplo, se você editar o script enquanto o cmd1 estiver em execução e alterar cmd2 para cmd3, ele carregará cmd3 quando o cmd1 terminar.
No Linux, se eu usar ifdown eth0
, perderei minha sessão ssh, então, em vez disso, eu faço ifdown eth0 && ifup eth0
para encadear os comandos.
Se você quiser fazer alguma coisa com relação a falhas, você deve verificar se as instruções e opções, juntamente com códigos de retorno e errorlevels. Linky .
However, I do not understand if it can be used in batch file, where you specify commands one after another, one command per line
O restante desta resposta é para arquivos em lote do Windows.
cmd1 && cmd2 && cmd3
em várias linhas? Os comandos podem ser divididos usando if
e %errorlevel%
Setlocal EnableDelayedExpansion
cmd1
if !ERRORLEVEL! equ 0 (
cmd2
if !ERRORLEVEL! equ 0 (
cmd3
)
)
&&
O operador &&
é um dos dois Operadores condicionais . O outro é ||
.
commandA && commandB
RuncommandA
, if it succeeds then runcommandB
commandA || commandB
RuncommandA
, if it fails then runcommandB
Fonte Redirecionamento