shell脚本case结构条件句应用实践
程序员文章站
2022-04-15 21:57:06
九、case结构条件句应用实践 (一)case语法结构 case结构条件句相当于多分支if条件语句,但是它比这些条件句看起来更规范工整,常被用于实现系统服务脚本等应用场景中。 case语句的语法结构: (二)实例,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