case语句的fall through
当然我说的是SHELL,不是其它的编程语言。
在看<学习KSH》中看到,把’;&’字串放在case语句中,会让case语句“fall through”(暂时没想到如何翻译,看下面的脚本输出来看看fall through是怎么回事)。实际 测试了一下发现,OpenBSD (5.8)以及DragonFly BSD (4.2)中的KSH不支持这个功能。因为他们的KSH所谓的pdksh衍生版(public domain korn shell),而Ubuntu (15.04)中通过apt-get安装的ksh是原始的Korn Shell,支持’;&’的fall through功能。
BASH shell则是从4.0版以后开始支持。
脚本:
A=2 case $A in 1) echo "QUICK" ;& 2) echo "BROWN" ;& 3) echo "FOX" ;& 4) echo "JUMPED" ;; esac
Ubuntu:
acheng@cactus:~$ ksh --version version sh (AT&T Research) 93u+ 2012-08-01 acheng@cactus:~$ ksh test.ksh BROWN FOX JUMPED
DragonFly BSD (4.2):
[acheng@violet /home/samba]$ bash test.ksh BROWN FOX JUMPED [acheng@violet /home/samba]$ ksh test.ksh test.ksh[4]: syntax error: `&' unexpected