微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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;31mapple\E[0m"
;;
2)
echo-e"\E[1;33mpear\E[0m"
;;
3)
echo-e"\E[1;34mbanana\E[0m"
;;
4)
echo-e"\E[1;35mcherry\E[0m"
;;
*)
echo-e"\E[1;36mplzinpitnum\E[0m"
esac
~

这里有加颜色的字符用法


echo -e "\E[1;31m char\E[0m" #\E可以使用\033代替,数字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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐