从程序员的角度来看,Shell脚本只是另一种编程语言,需要学习并遵守该语言的规则。然而,我必须承认,这种语法是我见过的在一个相当常用的语言中最奇怪的风格。Shell脚本是从哪个旧语言继承了这个语法呢?这个语法有特殊的含义或意义吗?
作为例子,这里是从另一个问题中摘取的一个小片段。
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
check_status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
看到这个代码,首先我注意到case
以esac
结尾,这是它的反向形式(就像if
以fi
结尾一样)。其次,我明白每个case
都后跟一个)
。很好,但我为什么需要在每个语句结尾处加上两个;
?我还想说,没有伴随(
的)
很丑陋。
我正在寻找有关该语言历史方面的更多信息,但我也愿意接受技术方面的原因。