← 返回首页

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