case条件语句的应用实践
case条件语句相当于多分支的if/elif/else的条件语句,但是它比这些条件语句看起来更规范更工整,常被应用于实现系统服务启动脚本等企业应用场景中。 当case执行一个相匹配的表达式之后会跳出case的语句。 如果没有匹配变量任何值,则执行*)后面的指令,直到遇到双分号(;;) case条件语句的语法格式为: case “变量” in 值1) 指令... ;; 值2) 指令... ;; *) 指令3... esac 例如: #!/bin/bash read-p"plzinputanum:"num case"$num"in 1) echo"thenumis$num" ;; 2) echo"thenumis$num" ;; [3-9]) echo"thenumis$num" ;; *) echo"plzinput[0-9]int" esac 执行shell脚本,打印一个如下的水果菜单; apple pear banana cherry #!/bin/bash cat<<EOF 1.apple 2.pear 3.banana 4.cherry EOF read-p"plzinputyourchoice:"hh case"$hh"in 1) echo-e"E[1;31mappleE[0m" ;; 2) echo-e"E[1;33mpearE[0m" ;; 3) echo-e"E[1;34mbananaE[0m" ;; 4) echo-e"E[1;35mcherryE[0m" ;; *) echo-e"E[1;36mplzinpitnumE[0m" esac ~ 这里有加颜色的字符用法: echo -e "E[1;31m charE[0m" #E可以使用 33代替,数字1表示加粗,31表示红色,其他颜色使用3[2-7]表示,[0m表示结束 脚本里面还可以这样写 #!/bin/bash red="E[1;31m" green="E[1;32m" yellow="E[1;33m" res="E[0m" echo-e"$redhongse"$res"" echo-e"$greenchengse"$res"" echo-e"$yellowhuangse"$res"" 如何要调整背景颜色将上面的1修改为40~47 结合case语句给输出的字符串加颜色 要求:使用case语句及通过脚本传入指定的内容和指定颜色,在脚本命令行传入两个参数,并给指定颜色; #!/bin/bash bb(){ echo"plzinputtwoarge" exit3 } aa(){ red="E[43;31m" green="E[41;32m" yellow="E[46;33m" res="E[0m" #echo-e"$redhongse"$res"" #echo-e"$greenchengse"$res"" #echo-e"$yellowhuangse"$res"" case"$2"in red|RED) echo-e"$red$1$res" ;; green|GREEN) echo-e"$green$1$res" ;; yellow|YELLOW) echo-e"$yellow$1$res" ;; *) echo"plzinput(rea|green|yellow)" esac } main(){ if[$#-ne2];then bb fi aa$1$2 } main$* 范例9-8:已知Nginx Web服务的管理命令如下 启动脚本命令为/application/nginx/sbin/nginx 停止脚本命令为/application/nginx/sbin/nginx -s nginx 请用case语句开发脚本,以实现nginx服务启动及关闭功能,具体脚本命令为/etc/init.d/nginx {start|stop|restart},并实现通过chkconfig进行开机自启动的管理。 由于ubuntu里面没有/etc/init.d/functions这个文件,所以没加 #!/bin/bash aa=/etc/init.d/nginx path=/usr/sbin if[!-f"/etc/init.d/nginx"];then echo"plzinstallnginx" exit3 fi #if["$#"-eq0-o"$#"-eq2];then #echo"thisisgood" #else #exit4 #fi start(){ if["`ps-ef|grepnginx|wc-l`"-gt2];then echo"thenginxserviceisstarting" return0 else $path/nginx aa=$? if[$aa-eq0];then echo"nginxisstarted" else echo"nginxisstarted" fi fi } stop(){ if["`ps-ef|grepnginx|wc-l`"-eq1];then echo"thenginxisstopped" return0 else $path/nginx-sstop bb=$? if[$bb-eq0];then echo"nginxisstopped" else echo"nginxisstopped" fi fi } case"$1"in start) start ss=$? echo$ss ;; stop) stop ss=$? echo$ss ;; restart) stop sleep2 start ss=$? echo$ss ;; *) echo"thisisnot" esac (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |