shell study-9day--shell流程控制语句case

1、流程控制语句:case

1)case语句格式

流程控制语句是用来实现对程序流程的选择、循环、转向和返回等进行控制。case 是其中的一个组成部分;

Case语句根据变量的不同进行取值比较,然后针对不同的取值分别执行不同的命令操作

Case语句格式:

case 变量或表达式 in
变量或表达式 1)
命令序列 1
;;
变量或表达式 2)
命令序列 2
;;
……
*)
默认命令序列
esac

2)执行流程

首先使用“变量或表达式”的值与值 1 进行比较,若取值相同则执行值 1 后的命令序列,直到遇见双分号“;; ”后跳转至 esac,表示分支结束;

若与值 1 不相匹配,则继续与值 2 进行比较,若取值相同则执行值 2 后的命令序列,直到遇见双分号“;; ”后跳转至 esac,表示结束分支。

依次类推,若找不到任何匹配的值,则执行默认模式“ *) ”后的命令序列,直到遇见 esac 后结束分支

注意事项:

A、“变量或表达式”后面必须为单词 in,每一个“变量或表达式”的值必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;结束。

B、匹配中的值可以是多个值,通过“|”来分隔。

3)case语句实例

[root@test ~]# cat first-case.sh 
#!/bin/bash
cat<<eof
1.取钱
2.存钱
3.查询
4.取卡
eof
read -p "请输入你的选项:" num
case $num in 
1)
        echo "取钱"
        ;;
2)
        echo "存钱"
        ;;
3)
        echo "查询"
        ;;
4)
        echo "取卡"
        ;;
*)
        echo "请输入有效数字选,有效范围1-4"
esac
[root@test ~]# 
[root@test ~]# sh first-case.sh 
1.取钱
2.存钱
3.查询
4.取卡
请输入你的选项:6
请输入有效数字选,有效范围1-4
[root@test ~]# sh first-case.sh 
1.取钱
2.存钱
3.查询
4.取卡
请输入你的选项:1
取钱
[root@test ~]#

B、myslq进程查看脚本

[root@test ~]# vi case-mysql.sh 
#!/bin/bash
read -p "请输入start|stop|restart|status|选项:" i
case $i in
start)
        /etc/init.d/mysqld $i
        ps -ef|grep mysqld
        echo "mysql start"
        ;;
stop)
         /etc/init.d/mysqld $i
        ps -ef|grep mysqld
        echo "mysql stop"
        ;;
restart)
         /etc/init.d/mysqld $i
        ps -ef|grep mysqld
        echo "mysql restart"
        ;;
status)
         /etc/init.d/mysqld $i
        ;;
*)
        echo "请输入正确选项"
esac
root@test ~]# sh case-mysql.sh 
请输入start|stop|restart|status|选项:start
root       2018      1  1 23:04 pts/0    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql      2129   2018  3 23:04 pts/0    00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root       2148   1985  0 23:04 pts/0    00:00:00 grep mysqld
mysql start
[root@test ~]#


个人公众号:

image.png

猜你喜欢

转载自blog.51cto.com/13440764/2575379