Shell Script 1 - Básico
Neste artigo venho mostrar uma pequena introdução à linguagem de programação Shell Script.
Parte 5: Controle de fluxo com o case
Usando o case
O case salva nossas vidas quando precisamos de opções no programa, ou simplesmente um menu, eu adoro utilizar ele pois é realmente muito simples, a única desvantagem dele com o if é que ele não permite que façamos testes com as variáveis, porém tudo tem um jeito.Explicando a lógica em português...
#exibindo o menu
escreva_na_tela " 1) apagar o arquivo"
escreva_na_tela " 2) criar o arquivo"
escreva_na_tela " 3) apagar tudo"
armazene-a-variavel menu
caso $menu seja
1) apagar arq ;;
2) criar arq ;;
3) apagar * ;;
*) escreva na tela "opção invalida" ;;
escreva_na_tela " 1) apagar o arquivo"
escreva_na_tela " 2) criar o arquivo"
escreva_na_tela " 3) apagar tudo"
armazene-a-variavel menu
caso $menu seja
1) apagar arq ;;
2) criar arq ;;
3) apagar * ;;
*) escreva na tela "opção invalida" ;;
Passando para o código:
echo "1) apagar arquivo"
echo "2) criar arquivo"
echo "3) apagar tudo"
read menu
case $menu in
1) rm arq ;;
2) touch arq ;;
3) rm *
*) echo "Escolha uma opção valida"
echo "2) criar arquivo"
echo "3) apagar tudo"
read menu
case $menu in
1) rm arq ;;
2) touch arq ;;
3) rm *
*) echo "Escolha uma opção valida"
Ou seja, o case compara a variável menu com os bytes antes do ) e se for igual executa os comandos contidos nele, você pode adicionar mais de um comando separando eles por ";", porém lembre-se de finalizar a linha com ";;".
O legal também é a opção "*", já que se o usuário digitou algo errado vai cair nesta opção, mas pense, e se o usuário cabeçudo digitou "um" ao invés de 1?
echo "1) apagar arquivo"
echo "2) criar arquivo"
echo "3) apagar tudo"
read menu
case $menu in
1 | um) rm arq ;;
2 | dois) touch arq ;;
3 | tres) rm *
*) echo "Escolha uma opção valida"
echo "2) criar arquivo"
echo "3) apagar tudo"
read menu
case $menu in
1 | um) rm arq ;;
2 | dois) touch arq ;;
3 | tres) rm *
*) echo "Escolha uma opção valida"
Sendo assim os comandos serão os mesmos se o usuário digitar "1" ou "um", já que na estrutura de decisão o | tem valor de OU lógico. =D