Operador combinador && multilinha para encadeamento de comandos em arquivo em lote

Operador combinador && multilinha para encadeamento de comandos em arquivo em lote

Eu vejoque este operador é usado no Windows (e pode ser Linux?) para encadear/combinar vários comandos em uma linha. Os comandos são executados um após o outro, desde que os anteriores sejam concluídos com sucesso (código de saída 0).

Porém, não entendo se pode ser usado em arquivo em 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 cmd1 && cmd2 && cmd3em várias linhas? Como você termina

cmd1
cmd2
cmd3

assim que o primeiro comando falhar?

Também gostaria de saber o nome da operadora para encontrar a resposta a perguntas como essa mais tarde.

Responder1

cmd1 && cmd2 && cmd3

pode ser escrito em múltiplas linhas como

cmd1
if not errorlevel 1 cmd2
if not errorlevel 1 cmd3

onde cada execução de comando dependerá do resultado do anterior

Responder2

No GNU/Linux posso dividir o comando cmd1 && cmd2 && cmd3em múltiplas linhas (por exemplo, para facilitar a leitura) em um arquivo de script como este:

cmd1 &&
cmd2 &&
cmd3

Responder3

A diferença entre eles é:

cmd1
cmd2
cmd3

disparará cada comando individualmente e permitirá o encerramento do trabalho em lote se você pressionar Ctrl+ cantes de terminar.

Enquanto

cmd1 && cmd2 && cmd3

irá lançar os comandos um após o outro, mas, sem olhar o script/de uma só vez.

Para mais exemplo,

Veja o primeiro exemplo, se você editar o script enquanto o cmd1 estiver em execução e alterar cmd2 para cmd3, ele carregará o cmd3 quando o cmd1 terminar.

No Linux, se eu fizer isso, ifdown eth0perderei minha sessão ssh, então, em vez disso, faço isso ifdown eth0 && ifup eth0para encadear os comandos.

Se você quiser fazer algo em relação a falhas, você deve examinar as instruções if e as opções junto com os códigos de retorno e níveis de erro.Linky.

Responder4

Para arquivo em lote, você precisa adicionar um delimitador ^ após cada operação condicional && (ou ||). Por exemplo:

echo 1 && ^
echo 2 && ^
copy >null && ^
echo 4

informação relacionada