Dominar o fluxo de controle de bash com quebra e continuar

Dominar o fluxo de controle de bash com quebra e continuar

Bash é uma linguagem de script poderosa que é comumente usada para tarefas de automação e administração do sistema. Um dos conceitos mais importantes no script de bash é o fluxo de controle, que se refere à maneira como o script executa diferentes comandos com base em várias condições. Duas declarações de fluxo de controle -chave no Bash são quebradas e continuam, o que pode ajudá -lo a controlar a execução do seu código e torná -lo mais eficiente.

O que é quebrar e continuar em Bash?

quebrar e continuar são duas declarações de fluxo de controle de bash que podem ser usadas para alterar o fluxo de uma declaração de loop ou interruptor. Eles permitem que você saia de um loop ou pular certas iterações com base em condições específicas.

Aqui está uma breve visão geral de como quebrar e continuar trabalhando em Bash:

  • quebrar: Quando usado dentro de uma instrução LOOP ou SWITCH, o intervalo sairá imediatamente da instrução LOOP ou SWITCH e continuará executando o script do próximo comando após a instrução Loop ou Switch.
  • continuar: Quando usado dentro de um loop, continue pulará a iteração atual e passará para a próxima iteração. Em outras palavras, permite pular certas iterações com base em condições específicas.
  • Ambos quebram e continuam podem ser úteis para melhorar a eficiência de seus scripts bash, pois eles permitem controlar a execução do seu código e evitar iterações desnecessárias.

    Usando Break in Bash

    Vamos começar olhando como usar o Break in Bash. A quebra é comumente usada em loops e alternar declarações para sair imediatamente do loop ou mudar de instrução quando uma determinada condição é atendida.

    Aqui está um exemplo de como usar o Break em um loop:

    #!/bin/bash for i in 1… 10 faça se [$ i -eq 5] então quebre o eco $ eu fiz echo "loop complete"
    12345678910111213#!/bin/bash para i em 1… 10 faça se [$ i -eq 5] então quebre o eco $ idosa eco "loop complete"

    Neste exemplo, temos um loop para itera sobre os valores de i de 1 a 10. No entanto, adicionamos uma declaração IF que verifica se eu é igual a 5. Se eu for igual a 5, usaremos a declaração de quebra para sair imediatamente do loop.

    Se executarmos este script, veremos a seguinte saída:

    Saída 1 2 3 4 loop completo 

    Como você pode ver, o loop apenas iterou até 4 antes de sair devido à declaração de quebra.

    Usando continue em Bash

    Em seguida, vamos ver como usar continue em bash. Continuar é usado em loops para pular certas iterações com base em condições específicas.

    Aqui está um exemplo de como usar continue em um loop:

    #!/bin/bash para i em 1… 10 faça se [$ i -eq 5] então continue fi echo $ eu fiz echo "loop complete"
    12345678910111213#!/BIN/BASH PARA I EM 1… 10 Faça se [$ i -eq 5] Em seguida, continue fi echo $ eco eco "loop completo"

    Neste exemplo, temos um loop para itera sobre os valores de i de 1 a 10. No entanto, adicionamos uma declaração IF que verifica se eu é igual a 5. Se eu for igual a 5, usaremos a declaração Continuar para pular essa iteração e passar para a próxima iteração.

    Se executarmos este script, veremos a seguinte saída:

    Saída 1 2 3 4 6 7 8 9 10 Loop completo 

    Como você pode ver, o loop pulou a iteração em que 'eu' era igual a 5 e continuou com o resto das iterações.

    Usando o intervalo e continue em declarações de switch

    Além de loops, quebrar e continuar também pode ser usado em declarações de switch em bash.

    Aqui está um exemplo de como usar o Break em uma declaração de interruptor:

    #!/Bin/Bash Case $ 1 no início) Echo "Starting Service" ;; pare) eco "serviço de parada" ;; reiniciar) eco "Serviço de reinicialização" ;; *) eco "opção inválida" quebra ;; ESAC ECHO "Switch Declaração completa"
    12345678910111213141516171819202122#!/Bin/Bash Case $ 1 no início) Echo "Starting Service" ;; pare) eco "serviço de parada" ;; reiniciar) eco "Serviço de reinicialização" ;; *) ECHO "Opção inválida" Break ;;

    Neste exemplo, temos uma declaração de comutador que verificará o valor do primeiro argumento da linha de comando ($ 1). Se US $ 1 for igual a "iniciar", "parar" ou "reiniciar", ele executará o comando correspondente. Se US $ 1 não for igual a nenhum desses valores, ele produzirá uma mensagem de erro e usará a instrução Break para sair da instrução Switch.

    Se executarmos este script com o comando ./myscript.SH inválido, veremos a seguinte saída:

    Saída Declaração de opção inválida completa 

    Como você pode ver, o script gera a mensagem de erro e depois sai da instrução Switch usando a instrução Break.

    Aqui está um exemplo de como usar continue em uma declaração de troca:

    #!/Bin/Bash Case $ 1 no início) Echo "Starting Service" ;; pare) eco "serviço de parada" ;; reiniciar) eco "Serviço de reinicialização" ;; *) continuar ;; ESAC ECHO "Switch Declaração completa"
    123456789101112131415161718192021#!/Bin/Bash Case $ 1 no início) Echo "Starting Service" ;; pare) eco "serviço de parada" ;; reiniciar) eco "Serviço de reinicialização" ;; *) Continue ;; ESAC Echo "Switch Complete Complete"

    Neste exemplo, modificamos o script anterior para usar a declaração continuação em vez de quebrar. Se US $ 1 não for igual a nenhum dos valores esperados, o script simplesmente pulará essa iteração da instrução Switch e seguirá para a próxima iteração.

    Se executarmos este script com o comando ./myscript.SH inválido, veremos a seguinte saída:

    Declaração de interruptor de saída completa 

    Como você pode ver, o script simplesmente pulou a iteração em que US $ 1 foi inválido e continuou com o resto do script.

    Conclusão

    Neste tutorial, cobrimos o básico do uso do Break e continuamos em scripts de basquete. Essas declarações são ferramentas poderosas para controlar a execução do seu código e melhorar a eficiência de seus scripts. Ao usar o intervalo e continuar efetivamente, você pode criar scripts de bash mais robustos e eficientes que podem lidar com uma variedade de tarefas e cenários.