加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

case条件语句的应用实践

发布时间:2020-12-15 19:57:17 所属栏目:安全 来源:网络整理
导读:case条件语句相当于多分支的if/elif/else的条件语句,但是它比这些条件语句看起来更规范更工整,常被应用于实现系统服务启动脚本等企业应用场景中。 当case执行一个相匹配的表达式之后会跳出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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读