AI智能
改变未来

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/bashcat<<eof1.取钱2.存钱3.查询4.取卡eofread -p \"请输入你的选项:\" numcase $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/bashread -p \"请输入start|stop|restart|status|选项:\" icase $i instart)        /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 \"请输入正确选项\"esacroot@test ~]# sh case-mysql.sh 请输入start|stop|restart|status|选项:startroot       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=mysqlmysql      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.sockroot       2148   1985  0 23:04 pts/0    00:00:00 grep mysqldmysql start[root@test ~]#

个人公众号:

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » shell study-9day–shell流程控制语句case