case
A sintaxe do case é:
case WORD in
padrao1)
<lista de comandos>
;;
padrao2)
<lista de comandos>
;;
*)
<lista de comandos se nenhum padrao for casado>
;;
esac
Como nós sabemos, um ;
serve para dizer ao shell que um comando
acabou, e se quisermos podemos começar outro depois disso. Ex.:
echo ; echo MELEU ; echo
E para dizer ao shell que terminamos uma opção do case
usamos dois ;;
.
Para os padrões você pode usar uns curingas parecidos com os usados
para nomes de arquivos, que são *
, ?
e a [lista]
. Os detalhes
destes curingas são explicados na seção "Pathname Expansion" da manpage.
Veja este script muito besta, sem utilidade prática e meramente ilustrativo (se quer exemplo prático veja o howto.sh em Exemplos Variados):
#!/bin/bash
# casetest.sh
if [ -z "$1" ]; then
echo "Entre com um parâmetro"
exit 1
fi
case "$1" in
*a)
echo "você digitou algo que termina com 'a'" ;;
?b)
echo "você digitou algum caractere seguido de um 'b'" ;;
[A-Za-z]c)
echo "você digitou um caractere do alfabeto seguido de um 'c'" ;;
m|M) # esta barra '|' serve como um "ou"
echo MELEU;;
*)
echo "nenhum dos parâmetros definidos foi usado" ;;
esac
Agora pratique um pouco!! ;-)
Veja outros exemplos Exemplos Variados.