Skip to content

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

 

 

Avatar

专业Linux/Unix/Windows系统管理员,开源技术爱好者。对操作系统底层技术,TCP/IP协议栈以及信息系统安全有强烈兴趣。电脑技术之外,则喜欢书法,古典诗词,数码摄影和背包行。

Sidebar