Próbuję zrobić coś takiego:
case $level in
3)
echo "Level Three"
2)
echo "Level Two"
1)
echo "Level one"
;;
esac
gdzie jeśli $ poziom = 3, wynik byłby wyprowadzony
Level Three
Level Two
Level One
podczas gdy jeśli poziom $ = 1, to wypisuje tylko
Level One
Ale kiedy próbuję, pojawia się błąd, syntax error near unexpected token ')'
ponieważ nie uwzględniłem ;;
.
Czy każdy inny język, który znam, pozwala na to, czy jest na to sposób w bash? Jakieś słowo kluczowe, które oznacza „teraz idź i zrób następny przypadek, jakby pasował”?
bash
shell-script
Benubird
źródło
źródło
Odpowiedzi:
Musisz użyć
;&
zamiast,;;
aby uzyskać awarię:Zobacz sekcję Konstrukcje warunkowe w dokumentacji bash.
Innym specjalnym znacznikiem jest
;;&
:;;
jest zawsze ostateczny, nie są testowane żadne dalsze wzory.źródło
ksh
i jest dostępny wksh
,bash
(od 4,0, 2009) orazzsh
(od 3.1.2, 1997).;;&
jest specyficzny dla bash.zsh
odpowiednikiembash
„s;;&
jest;|
(dodana w 4.3.3, 2007).