Saya mencoba melakukan sesuatu seperti ini:
case $level in
3)
echo "Level Three"
2)
echo "Level Two"
1)
echo "Level one"
;;
esac
di mana jika $ level = 3, itu akan ditampilkan
Level Three
Level Two
Level One
sementara jika $ level = 1, itu hanya akan menghasilkan
Level One
Tetapi ketika saya mencobanya, saya mendapatkan kesalahan syntax error near unexpected token ')'
karena saya tidak memasukkan ;;
.
Setiap bahasa lain yang saya tahu memungkinkan ini, apakah ada cara untuk melakukannya di bash? Semacam kata kunci yang berarti "sekarang lanjutkan dan lakukan huruf besar berikutnya seolah-olah cocok"?
bash
shell-script
Benubird
sumber
sumber
Jawaban:
Anda perlu menggunakan
;&
alih-alih;;
mendapatkan perilaku jatuh:Lihat bagian Konstruksi Bersyarat dari dokumentasi bash.
Penanda khusus lainnya adalah
;;&
, yang:;;
selalu final, tidak ada pola lebih lanjut yang diuji.sumber
ksh
dan tersedia diksh
,bash
(sejak 4.0, 2009) danzsh
(sejak 3.1.2, 1997).;;&
spesifik untuk bash.zsh
setara denganbash
's;;&
adalah;|
(ditambahkan dalam 4.3.3, 2007).