Shell Scripts 中 条件分支 case 的使用

在 Shell Scripts中条件分支除了使用 if 以外,还有一个非常常用的就是case了。我们都经常会通过命令

service rsyslog restart

来重启日志服务,实际上就是在调用 /etc/init.d/rsyslog这个脚本,并给脚本传入了restart方法。我们可以来看看这个脚本的实现,在/etc/init.d/下面的脚本就是学习case最好的例子,文件内容比较多,摘下一部分,如下:

case "$1" in # 注意这里的$1 表示的是取 给脚本传入的第一个参数。实际上是第二个,第一个是执行的脚本名字。$0 就表示的是rsyslog
  start)  # 当第一个参数为 start 时,执行下面的语句,注意后面的")"是必须的。这里的start是一个字符串,可以加上"start"也是可以的
        start # 这是定义的一个start 函数,走到这一行时,会调用预先定义的start函数
        ;; # 这个类似于java中的 break。结束这个分支,这行代码是必须的,不能省略
  stop) # 同start
        stop
        ;;
  restart)
        restart
        ;;
  reload)
        exit 3
        ;;
  force-reload)
        restart
        ;;
  status)
        rhstatus
        ;;
  condrestart|try-restart)
        rhstatus >/dev/null 2>&1 || exit 0
        restart
        ;;
  *) # 当以上所有的条件都不满足时,执行下面的语句,类似于java中的default
        echo $"Usage: $0 {start|stop|restart|condrestart|try-restart|reload|force-reload|status}"
        exit 3
esac # 当case结束的时候,一定要使用反case,也就是 esac来结束

通过这个例子,可以看到case的语法,以及case的应用场景

猜你喜欢

转载自blog.csdn.net/king_kgh/article/details/79948552