Linux分支语句 if、case的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/king_kgh/article/details/79948552

分支语句 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的应用场景

分支语句 if

举一个非常简单的小例子来说明 Shell Scripts中if语法的使用。

提示用户输入名字,如果用户没有输入任何信息,则提示用户一定要输入名字,如果用户输入的是hello,程序要给用户回复“hello”,如果既不是空串,也不是hello,则认为用户输入了名字,则提示欢迎XXX。

#!/bin/bash

# 接收用户的输入,并把用户的输入赋值给 name 变量
read -p "Please input your name : " name

if [ "$name" == "" ]; then
  echo "必须要输入一个字符串"
elif [ "$name" == "hello" ]; then
  echo "Hello"
else
  echo "Welcome $name"
fi # 结束if

# 退出标识位,表示正常退出
exit 0 

read 是接收用户的输入,-p 参数是可以给用户以提示,也就是后面跟的字符串 “Please ...” 这时候会等待用户的输入,当用户输入了数据之后,会把数据读到 name 变量中。

if是关键字,后面跟的是一对[],中括号在shell scripts中称之为条件表达式。这里要注意,if_[_condition_]; 注意下划线的地方一定要有空格。另外一定要注意不要忘记了后面的分号。if后面可以跟多个中括号的条件表达式,只在最后一个中括号后加上分号。

如判断年龄在 大于等于18 并且小于等于30的表达式如下:

[ $age -ge 18 ] && [ $age -le 30 ];

分号后面跟一个空格,是then关键字。另起一行,缩进,表示条件成立要执行的语句。

有多个条件,可以使用 elif 注意,这里并不是 else if

当所有条件不满足时,可以使用else ,else 后面不跟 then

最后当分支结构结束,以反的if,也就是 fi结束。

注意,shell scripts中的;具有特殊含义,语句结束不要加;

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试