Usando o CASE no Shell
O comando CASE executa uma ação caso o conteúdo de uma variável case com uma palavras. Ele é usado da seguinte forma:
case "$variavel" in
texto1) comandos que serão executados;;
texto2) comandos que serão executados;;
texto3) comandos que serão executados;;
esac
Repare que após as listas de comandos a serem executadas existem sempre ";;" isso mostra ao case, que todos comandos a ser executados já foram executados, sem o ";;" o script simplesmente mostrará erros e não funcionará. Exemplo:
exemplo_case.sh |
echo "Digite Oi, Tchau, Amor ou Odiar" read texto case "$texto" in Oi) echo "Oi! Td bom?" ;; Tchau) echo "Tchau. Até Mais!" ;; Amor) echo "Eu amo você";; Odiar) echo "Eu não odeio você";; *) echo "Você não digitou nenhuma das opções";; esac |
O Case verifica o conteúdo da variável "$texto" se for igual a "Oi" ele escreverá "Oi! Td bom?". Se for diferente ele segue em frente e verifica se "$texto" é igual a "Tchau"... e assim por diante... Se o case não achar nenhum texto que case com a variável, ele mostrará "Você não digitou nenhuma das opções". Isso porque o "*" diz para o Case executar a ação com qualquer valor que tenha a variável "$texto". "Veja que escrevi os ';;' em qualquer lugar e dei ENTER" entre alguns comandos que serão executados. Fiz isso apenas para mostrar que pode-se deixar o ";;" em qualquer lugar, mas é obrigatório que ele esteja lá ;)
Dá para fazer a mesma coisa que o CASE faz com IF, mas é muito mais complicado. Veja como ficaria um substituto para o case:
usando_if.sh |
if [ "$texto" = "Oi" ]
then echo "Oi! aaTd bom?" elif [ "$texto" = "Tchau" ] then echo "Tchau. Até Mais!" elif [ "$texto" = "Amor" ] then echo "Eu amo você" elif [ "$texto" = "Odiar" ] then echo "Eu não odeio você" else echo "Você não digitou nenhuma das opções" fi |