shell之case语句
case语句语法:
case $变量名 in
模式1)
命令序列1
;;
模式2)
命令序列2 ;;
*)
默认执行的命令序列
;;
esac
case语句结构特点如下:
(1)case行尾必须为单词 in 每个模式必须以右括号 )
(2)结束双分号 ;; 表示命令序列结束
(3)匹配模式中可是使用方括号表示一个连续的范围,如[0-9];使用竖杠符号“|”表示或。最后的“*)”表示默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“*)”后的命令序列
[root@localhost fortran]# cat test #!/bin/bash read -p "Please input :" pd case $pd in [a-z]|[A-Z]) echo "this is a letter." ;; [0-9]) echo "this is a digit." ;; *) echo "It's others." esac [root@localhost fortran]# ./test Please input :2 this is a digit. [root@localhost fortran]# ./test Please input :a this is a letter. [root@localhost fortran]# ./test Please input :A this is a letter. [root@localhost fortran]# cat shell_case #好像不能这样用,是否可解 #! /bin/bash read -p "Please input score: " SCORE case "$SCORE" in [90-100]) echo "grade: A" ;; [80-89]) echo "grade: B" ;; [70-79]) echo "grade: C" ;; [60-69]) echo "grade: D" ;; [0-59]) echo "grade: E" ;; *) echo "this is a bug" esac case语句常见于一些服务的启动脚本,如mysql、nginx等 [root@localhost 3306]# cat mysql #!/bin/bash port=3306 mysql_user="root" mysql_pwd="yanjiaxi" CmdPath="/application/mysql/bin" mysql_sock="/data/${port}/mysql.sock" #startup function ......
...... case $1 in start) start_mysql ;; stop) stop_mysql ;; restart) restart_mysql ;; *) printf "Usage: /data/${port}/mysql {start|stop|restart}\n" esac [root@localhost fortran]# ./test2 1.Math 2.English 3.Physics 4.Chemistry Please choose your course:1 Math [root@localhost fortran]# cat test2 #!/bin/bash #关于颜色的控制输出,百度,即用即搜 RED_COLOR='\E[1;31m' GREEN_COLOR='\E[1;32m' YELLOW_COLOR='\E[1;33m' BLUE_COLOR='\E[1;34m' RES='\E[0m' function usage(){ echo "USAGE: $0 {1|2|3|4}" exit 1 } function menu(){ #定义菜单 cat <<END 1.Math 2.English 3.Physics 4.Chemistry END } function chose(){ read -p "Please choose your course:" COURSE case "$COURSE" in 1) echo -e "${RED_COLOR}Math${RES}" ;; 2) echo -e "${GREEN_COLOR}English${RES}" ;; 3) echo -e "${YELLOW_COLOR}Physics${RES}" ;; 4) echo -e "${YELLOW_COLOR}Chemistry${RES}" ;; *) usage esac } function main(){ menu chose } main [root@localhost fortran]# ./test2 1.Math 2.English 3.Physics 4.Chemistry Please choose your course:4 Chemistry [root@localhost fortran]# ./test2 1.Math 2.English 3.Physics 4.Chemistry Please choose your course:3 Physics [root@localhost fortran]# ./test2 1.Math 2.English 3.Physics 4.Chemistry Please choose your course:2 English [root@localhost fortran]# ./test2 1.Math 2.English 3.Physics 4.Chemistry Please choose your course:1 Math
转载请注明:XAMPP中文组官网 » linux与fortran之case语句详解