case语句

1. 语法

1.1 语法

case var in 
pattern 1)
    command1
    ;;
pattern 2)
    command2
    ;;
pattern  3)
    command 3
    ;;
    *)
    comand4
    ;;
esac
====================
var表示变量,
*)不满足以上的默认执行
;; 结束
| 表示或的意思

1.2 案例

1.2.1 当给程序传入start、stop、reload三个不同参数时分别执行相应命令。

#!/bin/bash
case $1 in
   start|S)
      echo "service is runing...."
      ;;
   stop|T)
      echo "service is stoped..."
      ;;
   reload|R)
      echo "service is restart..."
      ;;
    *)
    echo "shuru"
    ;;
esac

1.2.2 脚本提示让用户输入需要管理的服务名,然后提示用户需要对服务做什么操作,如启动,关闭,重启等

#!/bin/bash
#脚本提示让用户输入需要管理的服务名,然后提示用户需要对服务做什么操作,如启动,关闭,重启等
read -p "请输入需要管理的服务名:" service
read -p "请输入你要进行的操作(start restart stop ):" dz

case $dz in
 start )
     systemctl start  $service  &>/dev/null
     echo "$service is start ok..."
     ;;

 restart )
     systemctl restart  $service  &>/dev/null
     echo "$service is restart ok..."
     ;;
 stop )
     systemctl stop  $service  &>/dev/null
     echo "$service is stop ok..."
     ;;
  * )
   
     echo "shurucuowu....."
     ;;
esac

#!/bin/bash
read -p "请输入需要管理的服务名称(vsftpd):" service
case $service in
		vsftpd)
		read -p "请输入要操作的动作:" action
		case $action in
			start|S)
			service vsftpd start
			;;
			stop|P)
			service vsftpd stop
			;;
			reload|restart|R)
			service vsftpd reload
			;;	
		esac
		;;
		httpd)
		echo "apache is running..."
		;;
		*)
		echo "请输入需要管理的服务名称(vsftpd):"
		;;
esac

1.2.3 模拟一个多任务维护界面。当执行程序时先显示总菜单,然后进行选择后做相应维护监控操作

#!/bin/bash
#模拟一个多任务维护界面。当执行程序时先显示总菜单,然后进行选择后做相应维护监控操作
cat <<EOF
	h	显示命令帮助
	f	显示磁盘分区
	d	显示磁盘挂载
	m	查看内存使用
	u	查看系统负载
	q	退出程序
EOF

while true
do
   read -p "请选择你要进行的操作:"  dz
   case $dz in
      h)
       cat <<EOF
        h       显示命令帮助
        f       显示磁盘分区
        d       显示磁盘挂载
        m       查看内存使用
        u       查看系统负载
        q       退出程序
EOF
        ;;
     f )
       fdisk -l
       ;;
     d )
       df -h
       ;;
     m )
       free -h
       ;;
     u )
      uptime
       ;;
     q )
       exit
      ;;
     * )
      echo "输入错误:。。。。"
      ;;
   esac
 done

1.2.4 函数的方式

#!/bin/bash
#模拟一个多任务维护界面。当执行程序时先显示总菜单,然后进行选择后做相应维护监控操作
menu(){
cat <<EOF
	h	显示命令帮助
	f	显示磁盘分区
	d	显示磁盘挂载
	m	查看内存使用
	u	查看系统负载
	q	退出程序
EOF
}
while true
do
   menu
   read -p "请选择你要进行的操作:"  dz
   case $dz in
      h)
       menu
        ;;
     f )
       fdisk -l
       ;;
     d )
       df -h
       ;;
     m )
       free -h
       ;;
     u )
      uptime
       ;;
     q )
       exit
      ;;
     * )
      echo "输入错误:。。。。"
      ;;
   esac
 done

1.3 综合案例 相亲小程序

要求:
1)

- 对性别进行判断,如果不输入男或者女,则显示”你是泰国来的吗?“
- 如果是男的,对其年龄进行判断。

2)

- 如果男的年龄大于等于18岁则显示“某某先生,你结婚了吗?”;
- 如果对方回答结了或者yes,则显示“结了你来这凑什么热闹”;
- 如果对方回答没有或者no,再次询问“那你有房有车吗?”;
- 如果既不说结了也不说没结则显示:“你到底结没结婚啊?”
- 如果回答有房有车,则显示”咱去民政局领证吧“;
- 如果回答没有,则显示“不好意思,我去下洗手间。”;
- 如果既不说有又不说没有,则显示“别浪费时间,请正面回答”。
- 如果男的年龄小于18岁,则显示“某某某你个小毛孩也来这凑热闹啦”

3)如果是女的,并且年龄大于等于18岁,则显示”某某女士你好“;否则显示”某某小姐你好“
#!/bin/bash
read -p "请输入你的姓名:" name
read -p "请输入你的性别男(n boy) 女(w girl)" sex

case $sex in 
   n|boy)
      read -p "请输入你的年龄:" age
      if [ $age -ge 18 ];then 
         echo "$name 您结婚了吗?"
         read -p "请选择 yes/no :" hd
         case $hd in
            yes)
               echo "结婚了还来凑什么热闹!!"
               ;;
            no)
               echo “那你有房有车吗”
               read -p "请选择 yes/no : " fh
                case $fh in 
                   yes)
                      echo "咋们去领证吧"
                      ;;
                   no)
                      echo "不好意思我去一下洗手间"
                      ;;
                    *)
                       echo "别浪费时间"
                      ;;
                esac  
               ;;
            *)
               echo "你到底结婚了没有。。"
               ;;
         esac
      elif [ $age -lt 18 ];then
         echo "小朋友多学习!!!!!"
      fi
      ;;
   w|girl)
      read -p "请输入你的年龄:" age
       if [ $age -gt 18 ];then
          echo "$name 女士您好"
       else
          echo "$name 小姐您好" 
       fi
      ;;
   * )
    echo "你是泰国来的吗?"
      ;; 
esac
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长安有故里y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值