Estou tentando fazer algo assim:
case $level in
3)
echo "Level Three"
2)
echo "Level Two"
1)
echo "Level one"
;;
esac
onde se $ level = 3, ele produziria
Level Three
Level Two
Level One
enquanto se $ level = 1, ele produziria apenas
Level One
Mas quando tento, recebo o erro syntax error near unexpected token ')'
porque não incluí o ;;
.
Qualquer outra linguagem que conheço permite isso, existe uma maneira de fazer isso no bash? Algum tipo de palavra-chave que significa "agora prossiga e faça o próximo caso como se correspondesse"?
bash
shell-script
Benubird
fonte
fonte
Respostas:
Você precisa usar em
;&
vez de;;
obter um comportamento de falha:Consulte a seção Construções condicionais da documentação do bash.
O outro marcador especial é
;;&
:;;
é sempre final, nenhum outro padrão é testado.fonte
ksh
e está disponível emksh
,bash
(desde 4.0, 2009) ezsh
(desde 3.1.2, 1997).;;&
é específico do bash.zsh
equivalente abash
's;;&
é;|
(adicionado em 4.3.3, 2007).