06@流程控制之case语句

1|0流程控制之case语句

1|1一、语法

case 变量 in 模式1) 命令序列1 ;; 模式2) 命令序列2 ;; 模式3) 命令序列3 ;; *) 无匹配后命令序列 esac

1|2二、案例使用

1|0案例1:(用户登录判断脚本)

#!/bin/bash read -p "username: " -t 5 username echo if [ -z $username ];then username="default" fi case $username in root) echo "管理员用户" ;; egon) echo "普通用户" ;; default) echo "默认用户" ;; *) echo "其他用户" esac

1|0案例2:(nginx启动脚本)

[root@egon shell]# cat nginx_stat.sh #!/bin/bash . /etc/init.d/functions if [ $# -ne 1 ] then echo "USAGE $0 {start|stop|restart}" exit 1 fi if [ "$1" == "start" ] then action "start nginx" /bin/true elif [ "$1" == "stop" ] then action "stop nginx" /bin/true elif [ "$1" == "restart" ] then action "restart nginx" /bin/true else echo "USAGE $0 {start|stop|restart}" exit 1 fi [root@egon shell]# chmod +x nginx_stat.sh [root@egon shell]# ./nginx_stat.sh start start nginx [ 确定 ] [root@egon shell]# ./nginx_stat.sh restart restart nginx [ 确定 ] [root@egon shell]# ./nginx_stat.sh USAGE ./nginx_stat.sh {start|stop|restart}

1|0案例3:(nginx启动脚本)

# 储备知识1 netstat -lntup|grep ":80\b" # \b锚定单词的结尾 # 储备知识2 action:打印一段信息并执行给定的命令,然后根据给定命令的执行的结果来调用 success,failure方法,确定最终显示的内容 [root@egon shell]# action "nginx start is" : nginx start is [ 确定 ] [root@egon shell]# action "nginx start is" /bin/true nginx start is [ 确定 ] [root@egon shell]# action "nginx start is" /bin/false nginx start is [失败] # 代码 [root@egon shell]# cat nginx_stat.sh #!/bin/bash . /etc/init.d/functions args=$1 fun(){ [ $? -eq 0 ] && action "Nginx $args is " /bin/true || echo "Nginx $args is " /bin/false } case $1 in start) netstat -an | grep -i Listen | grep -q "\b80\b" if [ $? -eq 0 ] then echo "Nginx is runing..." else /usr/sbin/nginx fun fi ;; stop) /usr/sbin/nginx -s stop fun ;; reload) /usr/sbin/nginx -s reload fun ;; restart) netstat -lntup|grep ":80\b" &>/dev/null if [ $? -ne 0 ] then /usr/sbin/nginx [ $? -eq 0 ] && echo "Nginx start is ok" || echo "Nginx start is failed" else /usr/sbin/nginx -s stop [ $? -eq 0 ] && echo "Nginx stop is ok" || echo "Nginx stop is failed" sleep 2 /usr/sbin/nginx fun fi ;; status) netstat -lntup|grep ":80\b" &>/dev/null if [ $? -eq 0 ] then echo "Nginx is runing ..." else echo "Nginx is not runing ..." fi ;; *) echo "Usage: $0 {start|stop|status|restart|reload}" exit 2 esac

1|0案例4:(一个简易跳板机脚本 )

# 储备知识 Linux中断信号区别为:键入不同、对应操作不同、启用不同。 1、HUP中断信号:HUP中断信号的对应操作为让进程挂起,睡眠。同<Ctrl+X> 2、INT中断信号:INT中断信号的对应操作为正常关闭所有进程。同<Ctrl+C> 3、TERM中断信号 15:TERM中断信号的对应操作为正常的退出进程。 4、KILL中断信号 9:KILL中断信号的对应操作为强制关闭进程。 5、STOP 19暂停(同 Ctrl + Z) 6、CONT 18继续(与STOP相反, fg/bg命令) 7、TSTP中断信号:TSTP中断信号的对应操作为暂时停用进程。 # 代码 [root@egon shell]# cat jumpserver.sh #!/bin/bash cat<<EOF 1. BACKUP 10.0.0.41 2. WEB02 192.168.12.21 3. WEB03 10.0.0.9 EOF trap "echo 不要乱按键盘,否则服务器将会爆炸" HUP INT TSTP while true do read -p "请输入连接主机编号信息: " num read -p "请输入账号: " user # read -p "请输入要执行的命令: " cmd case $num in 1) ssh $user@10.0.0.41 [ $? -ne 0 ] && echo "connect faild" ;; 2) ssh $user@192.168.12.21 [ $? -ne 0 ] && echo "connect faild" ;; *) echo "请输入连接主机信息" esac done

__EOF__

本文作者ଲ小何才露煎煎饺
本文链接https://www.cnblogs.com/zeny/p/15121524.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   ଲ小何才露煎煎饺  阅读(61)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示