J'essaie de faire quelque chose comme ça:
case $level in
3)
echo "Level Three"
2)
echo "Level Two"
1)
echo "Level one"
;;
esac
où si $ level = 3, il produirait
Level Three
Level Two
Level One
tandis que si $ level = 1, il ne produirait que
Level One
Mais quand je l'essaye, j'obtiens l'erreur syntax error near unexpected token ')'
parce que je n'ai pas inclus le ;;
.
Toutes les autres langues que je connais le permettent, existe-t-il un moyen de le faire en bash? Une sorte de mot clé qui signifie "maintenant, continuez et faites le prochain cas comme s'il correspondait"?
bash
shell-script
Benubird
la source
la source
Réponses:
Vous devez utiliser
;&
au lieu de;;
pour obtenir un comportement de substitution :Voir la section Constructions conditionnelles de la documentation bash.
L'autre marqueur spécial est
;;&
, qui:;;
est toujours final, aucun autre motif n'est testé.la source
ksh
et est disponible enksh
,bash
(depuis 4.0, 2009) etzsh
(depuis 3.1.2, 1997).;;&
est spécifique à bash.zsh
équivalent debash
l »;;&
est;|
(ajoutée en 4.3.3, 2007).