<Anterior | Conteúdo | Próxima>
Saindo de um loop
O bash fornece dois comandos embutidos que podem ser usados para controlar o fluxo do programa dentro dos loops. O comando break termina imediatamente um loop e o controle do programa recomeça com a próxima instrução após o loop. O comando continue faz com que o restante do loop seja pulado e o controle do programa seja retomado com a próxima iteração do loop. Aqui, vemos uma versão do programa do menu while incorporando break e continue:
#! / Bin / bash
# while-menu2: um programa de informações do sistema acionado por menu DELAY = 3 # Número de segundos para exibir os resultados
enquanto verdadeiro; Faz
remover filtragem
gato << - _EOF_
Por favor selecione:
1. Exibir informações do sistema
2. Exibir espaço em disco
3. Exibir a utilização do espaço doméstico
0. Saia
_EOF_
leia -p "Digite a seleção [0-3]>"
if [[$ REPLY = ~ ^ [0-3] $]]; então se [[$ REPLY == 1]]; então
echo "Hostname: $ HOSTNAME" uptime
dormir $ DELAY
continuar
fi
if [[$ REPLY == 2]]; então df -h
dormir $ DELAY
continuar
fi
if [[$ REPLY == 3]]; então
if [[$ (id -u) -eq 0]]; então
echo "Utilização do espaço doméstico (todos os usuários)" du -sh / home / *
outro
#! / Bin / bash
# while-menu2: um programa de informações do sistema acionado por menu DELAY = 3 # Número de segundos para exibir os resultados
enquanto verdadeiro; Faz
remover filtragem
gato << - _EOF_
Por favor selecione:
1. Exibir informações do sistema
2. Exibir espaço em disco
3. Exibir a utilização do espaço doméstico
0. Saia
_EOF_
leia -p "Digite a seleção [0-3]>"
if [[$ REPLY = ~ ^ [0-3] $]]; então se [[$ REPLY == 1]]; então
echo "Hostname: $ HOSTNAME" uptime
dormir $ DELAY
continuar
fi
if [[$ REPLY == 2]]; então df -h
dormir $ DELAY
continuar
fi
if [[$ REPLY == 3]]; então
if [[$ (id -u) -eq 0]]; então
echo "Utilização do espaço doméstico (todos os usuários)" du -sh / home / *
outro
echo "Utilização do espaço doméstico ($ USER)" du -sh $ HOME
fi
dormir $ DELAY
continuar
fi
if [[$ REPLY == 0]]; então quebrar
fi
outro
echo "Entrada inválida." dormir $ DELAY
fi feito
echo "Programa encerrado."
echo "Utilização do espaço doméstico ($ USER)" du -sh $ HOME
fi
dormir $ DELAY
continuar
fi
if [[$ REPLY == 0]]; então quebrar
fi
outro
echo "Entrada inválida." dormir $ DELAY
fi feito
echo "Programa encerrado."
Nesta versão do script, configuramos um loop infinito (um que nunca termina por conta própria) usando o verdadeiro comando para fornecer um status de saída para enquanto. Desde verdadeiro sempre sairá com um status de saída zero, o loop nunca terminará. Esta é uma técnica de script surpreendentemente comum. Uma vez que o loop nunca terminará sozinho, cabe ao programador fornecer alguma maneira de interromper o loop quando for a hora certa. Neste script, o quebrar comando é usado para sair do loop quando a seleção “0” é escolhida. o Prosseguir comando foi incluído no final das outras opções de script para permitir uma execução mais eficiente. Usando continuar, o script irá ignorar o código que não é necessário quando uma seleção for identificada. Por exemplo, se a seleção “1” for escolhida e identificada, não há razão para testar as outras seleções.