Я пытаюсь сделать что-то вроде этого:
case $level in
3)
echo "Level Three"
2)
echo "Level Two"
1)
echo "Level one"
;;
esac
где, если $ level = 3, это вывело бы
Level Three
Level Two
Level One
в то время как если бы $ level = 1, он вывел бы только
Level One
Но когда я пробую это, я получаю ошибку, syntax error near unexpected token ')'
потому что я не включил ;;
.
Любой другой язык, который я знаю, позволяет это, есть ли способ сделать это в bash? Какое-то ключевое слово, которое означает «теперь продолжай и делай следующий случай, как если бы он соответствовал»?
bash
shell-script
Benubird
источник
источник
Ответы:
Вы должны использовать
;&
вместо того,;;
чтобы получить провал поведение:Смотрите раздел Условные конструкции документации bash.
Другой специальный маркер
;;&
, который:;;
всегда окончательно, дальнейшие шаблоны не проверяются.источник
ksh
и доступен вksh
,bash
(начиная с 4.0, 2009) иzsh
(с 3.1.2, 1997).;;&
является специфичным для bash.zsh
эквивалентноbash
«s;;&
в;|
(добавлен в 4.3.3, 2007).