相关疑难解决方法(0)

bash/zsh脚本中"case"语句的奇怪语法是什么原因?

从程序员的角度来看,shell脚本只是另一种编程语言,人们必须学习并遵守语言规则.但是,我必须承认,这种语法是我在一种常用语言中见过的最奇怪的风格.shell是否采用了它来自的较旧语言的语法?语法中是否有特殊含义/含义?

作为一个例子,这里是我从SO上的另一篇文章中获取的一个小片段

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        check_status
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac
Run Code Online (Sandbox Code Playgroud)

看看这个,首先我可以看到case结束esac,这是它的反转形式(如if结束fi).其次,我理解每个案例后面跟着一个).很公平,但为什么我;在每个声明的末尾都需要两个呢?我还会说)没有伴随的(是丑陋的.

我正在寻找有关语言历史方面的更多信息,但我也是出于技术原因而开放.

bash shell zsh case

45
推荐指数
3
解决办法
1万
查看次数

标签 统计

bash ×1

case ×1

shell ×1

zsh ×1