shell编程基础(二) case语句应用

 case条件结构语句

case "字符串变量" in

  值1)

     指令1

     ;;

  值2)

     指令2

     ;;

  值*)

     指令

esac

 case与if的对比

case书写方式

case $name in

  值1)

      指令1

      ;;

  值2)

      指令2

      ;;

   *)

      指令

esac

 

if书写方式

if [ $name == "值1" ]

  then

    指令1

elif [ $name == "值2" ]

  then

    指令2

else

    指令   

fi

 case值的书写方式

apple)

      echo -e "$RED_COLOR apple $RES"

      ;;

也可以这样写,输入2种格式找同一个选项

apple|APPLE)

      echo -e "$RED_COLOR apple $RES"

      ;;

 case语句小结

case语句就相当于多分支的if语句。case语句的优势是更规范、易读。

case语句适合变量的值少,且为固定的数字或字符串集合。(1,2,3)或(start,stop,restart)。

系统服务启动脚本传参的判断多用case语句,多参考rpcbind/nfs/crond脚本;菜单脚本也可以使用case

 

 写脚本规范及注意事项

1.变量名称不能和系统已经存在的命令等重复  free  == > Free

2. 判断单位要统一

3. 脚本一行不超过一屏的一半。

4. 能写成变量的内容尽量写成变量

 

if 语句类似黑名单,需要把这种错误场景封堵

case 语句类似白名单,只要把正确结果列完整即可

 练习

[root@oldboy scripts]# cat menu3.sh

#!/bin/bash

##############################################################

# File Name: menu2.sh

# Version: V1.0

# Author: oldboy

# Organization: www.oldboyedu.com

##############################################################

echo '1.install MySQL

2.install Tomcat

3.exit'

read -p "请选择一个数字:" num

[ -z "$num" ] && exit 1

 

expr $num + 99 &>/dev/null

if [ $? -ne 0 ]

then

    echo "请输入整数"

    exit

fi

 

case "$num" in

    1)

        echo "install MySQL"

        ;;

    2)

        echo "install Tomcat"

        ;;

    3)

        echo bye

        exit 1

        ;;

    *)

        echo "别瞎逼输入,请输入{1|2|3}"

esac

 

Rsync启动脚本

[root@oldboy scripts]# cat rsync1.sh

#!/bin/bash

##############################################################

# File Name: rsync.sh

# Version: V1.0

# Author: oldboy

# Organization: www.oldboyedu.com

##############################################################

start(){

    rsync --daemon &>/dev/null

    retval=$?

    if [ $retval -eq 0 ]

    then

        echo "rsyncd is started."

        return $retval

    else

        echo "rsyncd startup fail."

        return 1

    fi

}

stop(){

    pkill rsync &>/dev/null

    retval=$?

    if [ $retval -eq 0 ]

    then

        echo "rsyncd is stopped"

        return 0

    else

        echo "rsyncd stop fail."

        return 1

    fi

}

case "$1" in

    start)

        start

        retval=$?

        exit $retval

        ;;

    stop)

        stop

        retval=$?

        exit $retval

        ;;

    restart)

        stop

        sleep 2

        start

        retval=$?

        exit $retval

        ;;

    *)

        echo $"Usage:$0 {start|stop|restart}"

        exit 1

esac

exit $retval

转载于:https://www.cnblogs.com/linux-yang153/p/9478105.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值