shell脚本之九:case结构条件句应用实践
2020-04-28 16:02:01来源:博客园 阅读 ()
shell脚本之九:case结构条件句应用实践
九、case结构条件句应用实践
(一)case语法结构
case结构条件句相当于多分支if条件语句,但是它比这些条件句看起来更规范工整,常被用于实现系统服务脚本等应用场景中。
case语句的语法结构:
case "变量" in
值1)
指令1
;;
值2)
指令2
;;
值3)
指令3
;;
*)
指令4
esac
(二)实例,case应用:
[root@centos6-kvm3 scripts]# cat 09-03.sh
#!/bin/bash
cat <<EOF
1.install lnmp
2.install lamp
3.exit
EOF
read -p "请输入一个数字{1|2|3}:" num
expr $num + 2 &>/dev/null
if [ $? -ne 0 ]
then
echo "usage:$0{1|2|3}"
exit 1
fi
case $num in
1)
echo "install lnmp"
;;
2)
echo "install lamp"
;;
3)
echo "exit"
exit
;;
*)
echo "usage:$0{1|2|3}"
exit 1
esac
(三)实例,不同的分支字体颜色不同:
当用户输入对应的数字选择水果的时候,告诉他选择的水果是什么,并给水果单词加上一种颜色(随意),要求用case语句实现。
内容的颜色用数字表示,范围为30-37,每个数字代表一种颜色。
echo -e "\033[30m 黑色字oldboy trainning \033[0m" #<==30m表示黑色字。
echo -e "\033[31m 红色字oldboy trainning \033[0m" #<==31m表示红色字。
echo -e "\033[32m 绿色字oldboy trainning \033[0m" #<==32m表示绿色字。
echo -e "\033[33m 棕色字oldboy trainning \033[0m" #<==33m表示棕色字(brown),和黄色字相近。
echo -e "\033[34m 蓝色字oldboy trainning \033[0m" #<==34m表示蓝色字。
echo -e "\033[35m 洋红字oldboy trainning \033[0m" #<==35m表示洋红色字(magenta),和紫色字相近。
echo -e "\033[36m 蓝绿色oldboy trainning \033[0m" #<==36m表示蓝绿色字(cyan),和浅蓝色字相近。
echo -e "\033[37m 白色字oldboy trainning \033[0m" #<==37m表示白色字。
1、基础脚本1:
[root@centos6-kvm3 scripts]# cat 09-04.sh
#!/bin/bash
cat <<EOF
1.apple
2.pear
3.banana
4.cherry
EOF
read -p "请输入一个数字{1|2|3|4}:" num
expr $num + 2 &>/dev/null
if [ $? -ne 0 ]
then
echo "usage:$0 {1|2|3|4}"
exit 1
fi
case $num in
1)
echo -e "\033[31m apple \033[0m"
;;
2)
echo -e "\033[32m pear \033[0m"
;;
3)
echo -e "\033[33m banana \033[0m"
;;
4)
echo -e "\033[34m cherry \033[0m"
;;
*)
echo "usage:$0 {1|2|3|4}"
exit
esac
[root@centos6-kvm3 scripts]#
2、高级脚本2(带颜色):
颜色函数:
[root@centos6-kvm3 scripts]# cat color.sh
#!/bin/bash
red="\033[31m"
green="\033[32m"
yellow="\033[33m"
blue="\033[34m"
tail="\033[0m"
color(){
case $1 in
red)
echo -e "${red}$2${tail}"
;;
green)
echo -e "${green}$2${tail}"
;;
yellow)
echo -e "${yellow}$2${tail}"
;;
blue)
echo -e "${blue}$2${tail}"
;;
*)
echo "usage:$0 please input right content"
esac
}
color $*
[root@centos6-kvm3 scripts]#
功能调用颜色函数:
[root@centos6-kvm3 scripts]# cat 09-04.sh
#!/bin/bash
. ./color.sh
cat <<EOF
1.apple
2.pear
3.banana
4.cherry
EOF
read -p "请输入一个数字{1|2|3|4}:" num
expr $num + 2 &>/dev/null
if [ $? -ne 0 ]
then
echo "usage:$0 {1|2|3|4}"
exit 1
fi
case $num in
1)
color red apple
;;
2)
color green pear
;;
3)
color yellow banana
;;
4)
color blue cheryy
;;
*)
echo "usage:$0 {1|2|3|4}"
exit
esac
[root@centos6-kvm3 scripts]#
字体背景颜色
字的背景颜色对应的数字范围为40-47,代码如下。
echo -e "\033[40;37m 黑底白字oldboy\033[0m" #<==40m表示黑色背景。
echo -e "\033[41;37m 红底白字oldboy\033[0m" #<==41m表示红色背景。
echo -e "\033[42;37m 绿底白字oldboy\033[0m" #<==42m表示绿色背景。
echo -e "\033[43;37m 棕底白字oldboy\033[0m" #<==43m表示棕色背景(brown),和黄色背景相近。
echo -e "\033[44;37m 蓝底白字oldboy\033[0m" #<==44m表示蓝色背景。
echo -e "\033[45;37m 洋红底白字oldboy\033[0m" #<==45m表示洋红色背景(magenta),和紫色背景相近。
echo -e "\033[46;37m蓝绿底白字oldboy\033[0m" #<==46m表示蓝绿色背景(cyan),和浅蓝色背景相近。
echo -e "\033[47;30m 白底黑字oldboy\033[0m" #<==47m表示白色背景。
(四)rsync启动基本脚本实例:
[root@centos6-kvm3 scripts]# cat rsync.sh
#!/bin/bash
case $1 in
start)
rsync --daemon
if [ $? -eq 0 ]
then
echo "rsync $1 ok"
else
echo "rsync $1 fail"
fi
;;
stop)
killall rsync
if [ $? -eq 0 ]
then
echo "rsync $1 ok"
else
echo "rsync $1 fail"
fi
;;
restart)
killall rsync && sleep 1 && rsync --daemon
if [ $? -eq 0 ]
then
echo "rsync $1 ok"
else
echo "rsync $1 fail"
fi
;;
*)
echo "usage:$0 {start|stop|restart}"
esac
查看进程:lsof -i:873
rsync启动高级脚本:
cp rsyncd.sh /etc/init.d/rsyncd
chkconfig --list rsyncd
chkconfig --add rsyncd
chmod +x /etc/init.d/rsyncd
(五)rsync启动脚本之高阶
[root@centos6-kvm3 scripts]# cat rsyncd.sh
# chkconfig: 2345 20 80
# description: rsync start stop
#!/bin/bash
. /etc/init.d/functions
start(){
rsync --daemon
retval=$?
if [ $retval -eq 0 ]
then
action "rsync start ok" /bin/true
return $retval
else
action "rsync start fail" /bin/false
return $retval
fi
}
stop(){
killall rsync &>/dev/null
retval=$?
if [ $retval -eq 0 ]
then
action "rsync stop ok" /bin/true
return $retval
else
action "rsync stop fail" /bin/false
return $retval
fi
}
case $1 in
start)
start
retval=$?
;;
stop)
stop
retval=$?
;;
restart)
stop
sleep 2
start
retval=$?
;;
*)
echo "usage:$0 {start|stop|restart}"
esac
exit $retval
原文链接:https://www.cnblogs.com/cuiyongchao007/p/12799174.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Linux系统如何设置开机自动运行脚本? 2020-06-11
- Linux指令和shell脚本 2020-06-11
- Xshell如何配置并远程连接Linux服务器详解 2020-05-31
- Ubuntu下用脚本执行sql语句(sqlite) 2020-05-29
- 如何将目录下的脚本一次性全部执行 2020-05-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash