今天看了别人用case函数写的shell脚本,远程到系统内的服务器执行检查指令,每一个选项对应一个功能,提供选择界面来选择不同的功能。于是笔者将以前看到过的有case函数的shell脚本重新翻出来整理一下一起分享,特别是/etc/init.d目录下来的脚本服务,可以通过service dump start/stop/restart来完成服务的启停,当然也可以参考mysql、network等等的脚本。
1、CASE简单使用
下面的为test.sh脚本,执行./test.sh start就会执行脚本里面的start函数,$1是读取后面的第一个参数。 每个模式必须以右括号 ) 结束,双分号 ;; 表示命令序列结束。“*)”表示默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“*)”后的命令序列。
#!/bin/bash
case "$1" in
start)
echo "begin start do someting"
;;
stop)
echo "begin stop do someting"
;;
restart)
echo "begin restart do someting"
;;
*)
;;
esac
2、Service服务中的CASE
脚本做成服务放置在/etc/init.d目录下,可以参考笔者以前的文章——linux中/etc/init.d设置开机启动。dump服务,脚本把进程包装成了一个服务, 定义了它在启动、 重启和终止时的具体行为。这个脚笔者觉得很典型值得借鉴,同时执行exit可使shell以指定的状态值退出,状态值0代表执行成功,其他值代表执行失败。
case "$1" in
start)
start
exit 0
;;
stop)
stop
exit 0
;;
reload|restart|force-reload)
stop
start
exit 0
;;
**)
echo "Usage: $0 {start|stop|reload}" 1>&2
exit 1
;;
esac
3、CASE与WHILE 结合完成选择功能
#!/bin/bash
your_choice(){
case "$1" in
1)
echo "begin start do someting"
;;
2)
echo "begin stop do someting"
;;
3)
echo "begin restart do someting"
;;
4)
echo "bye"
exit 0
;;
*)
echo "wrong chioce"
;;
esac
}
while true
do
cat << EOF
***********************************
1、start
2、stop
3、restart
4、exit
***********************************
EOF
read -p "please enter your choice:" choice
your_choice $choice
done
read -p 后面跟提示信息,即在输入前打印提示信息。-n 后跟一个数字,定义输入文本的长度,比如这里可以写成read -n1 "please enter your choice:" choice,这样输入选择的一个字符后就可以不需要按enter键。输入的字符数目达到预定数目1时,自动退出,并将输入的数据赋值给变量choice。
cat << EOF EOF , 区别与echo只打印一行,可以打印一大段文字。 EOF是“end of file”,在这里没有特殊的含义,你可以使用FRE或OOO等。
网友评论