processando jobs sequenciais e paralelos no script bash

0

Eu entendo que na programação bash, comamnd1;command2;command3 os executará sequencialmente, enquanto command1&&command2&&command3 os executará em paralelo. No entanto, o que acontece quando eu combino ; e && juntos, por ex. %código%? Qual é a precedência entre command1 ; command2 && command 3 e ; no bash? Está acima do equivalente de comando para && ou para (command1;commmand2) && command3

    
por Prithviraj 12.11.2014 / 00:32

1 resposta

4

Primeira coisa: para executar um comando em segundo plano, você o digita seguido por um único & , o duplo && é um operador lógico e (assim como || é lógico ou). A execução de command1 && command2 devolve lógica verdadeira (ou seja, código de retorno 0, o que significa "nenhum erro") se ambos os comandos retornarem sem erro. Como um efeito colateral muito usado, o comando2 não é executado quando o comando1 retornou um erro, pois o resultado da lógica e da operação não pode ser verdadeiro se o primeiro argumento já for conhecido como falso.

command1 ; command2 & command3

Os comandos são executados da esquerda para a direita: primeiro command1 é executado, aguardado até terminar, então command2 é executado em segundo plano (como é seguido por & ) e imediatamente seguido por command3 .

Você pode usar chaves para permitir que uma sequência de comandos seja executada em segundo plano assim:

{ command1 ; command2 ; } & command3
    
por 12.11.2014 / 02:15

Tags