2026/1/23 17:43:26
网站建设
项目流程
做网站在厦门排前5名,替人做赌彩网站,搜索引擎成功案例分析,企业手机网站建设渠道case 条件语句的应用实践 文章目录case 条件语句的应用实践1 case 条件语句的语法2 case 条件语句实践3 实践#xff1a;给输出的字符串加颜色4 case 语句企业级生产案例示例1#xff1a;控制sshd服务示例2#xff1a;管理用户5 case 条件语句的 Linux 系统脚本范例6 本章小…case 条件语句的应用实践文章目录case 条件语句的应用实践1 case 条件语句的语法2 case 条件语句实践3 实践给输出的字符串加颜色4 case 语句企业级生产案例示例1控制sshd服务示例2管理用户5 case 条件语句的 Linux 系统脚本范例6 本章小结case 条件语句相当于多分支的if/elif/else条件语句但是它比这些条件语句看起来更规范更工整常被应用于实现系统服务启动脚本等企业应用场景中。在case语句中程序会将case获取的变量的值与表达式部分的值1、值2、值3等逐个进行比较如果获取的变量值和某个值例如值1)相匹配就会执行值例如值1)后面对应的指令例如指令1其可能是一组指令)直到执行到双分号;;才停止然后再跳出case语句主体执行case语句即esac字符后面的其他命令。如果没有找到匹配变量的任何值则执行“*)”后面的指令通常是给使用者的使用提示)直到遇到双分号此处的双分号可以省略或esac结束这部分相当于if多分支语句中最后的else语句部分。另外case语句中表达式对应值的部分还可以使用管道等更多功能来匹配。1 case 条件语句的语法case 条件语句的语法格式为case变量值in值1)指令1...;;值2)指令2...;;*)指令3...;;esac为了便于大家记忆下面是某女生写的case 条件语句的中文形象描述:case找老公条件in资产大于1千万 嫁给你;;资产介于1百万和1千万之间 再考虑以下;;资产小于1百万 再见;;其他情况 视情况而定;;esaccase 条件语句的执行流程逻辑图如下2 case 条件语句实践示例判断用户输入的数字是否是1、2、3。[laomashell ~]$catcase1.sh#!/bin/bashread-p请输入一个1-3之间数字numcase$numin1)echo您输入的数字是$num;;2)echo您输入的数字是$num;;3)echo您输入的数字是$num;;*)echo请输入一个1-3之间数字。;;esac# 执行验证[laomashell ~]$bashcase1.sh 请输入一个1-3之间数字1 您输入的数字是1[laomashell ~]$bashcase1.sh 请输入一个1-3之间数字4 请输入一个1-3之间数字。3 实践给输出的字符串加颜色[laomashell ~]$catcase2.sh#!/bin/bashcase$1inPASS)echo-e\033[1;32mPASS\033[0;39m;;FAIL)echo-e\033[1;31mFAIL\033[0;39m;;DONE)echo-e\033[1;35mDONE\033[0;39m;;*)echoUsage:$0PASS|FAIL|DONE;;esac执行效果4 case 语句企业级生产案例示例1控制sshd服务#!/bin/bashcase$1instart)systemctl start sshd;;stop)systemctl stop sshd;;restart|reload)systemctl restart sshd;;status)systemctl status sshd;;*)echoUsage: case-ssh start|stop|restart|reload|status;;esac简化版#!/bin/bashcase$1instart|stop|restart|reload|status)systemctl$1sshd;;*)echoUsage: case-ssh start|stop|restart|reload|status;;esac示例2管理用户通过传参的方式往 /etc/users 里添加用户具体要求如下。命令用法为Usage: user-mgr [ [-add|-a ] | [ -d|-del ] | [ -s|-search ] ] username传参要求为参数为-add|-a时表示添加后面接的用户名。如果有同名的用户 则不能添加。参数为-del|-d时表示删除后面接的用户名。如果用户不存在提示用户不存在。参数为-search|-s时表示查找后面接的用户名。 如果用户不存在提示用户不存在。没有用户时应给出明确提示。/etc/users 保存用户清单格式如下username: laoma username: laowang/etc/users 不能被外部其他程序直接删除及修改。参考答案答案1#!/bin/bash# run as root[$UID-ne0]echoPlease run as rootexit1# create users fileusers_info_file/etc/users[-f${users_info_file}]||touch${users_info_file}# provides two argsif[$#-ne2];thenechoUsage: user-mgr [ [-add|-a ] | [ -d|-del ] | [ -s|-search ] ] usernameexit2fi# get arg valueaction$1username$2# manager usercase$actionin-s|-search)ifgrep-qusername:$username${users_info_file};thenecho$usernameis exist.elseecho$usernameis not exist.fi;;-a|-add)ifgrep-qusername:$username${users_info_file};thenecho$usernameis exist.elsechattr -i${users_info_file}echousername:$username${users_info_file}echo$usernamehas been added.chattr i${users_info_file}fi;;-d|-del)ifgrep-qusername:$username${users_info_file};thenchattr -i${users_info_file}sed-i/username:$username/d${users_info_file}chattr i${users_info_file}echo$usernamehas been deleted.elseecho$usernameis not exist.fi;;*)echoUsage: user-mgr [ [-add|-a ] | [ -d|-del ] | [ -s|-search ] ] username;;esac答案2#!/bin/bash# run as root[$UID-ne0]echoPlease run as rootexit1# create users fileusers_info_file/etc/users[-f${users_info_file}]||touch${users_info_file}functionusage(){echoUsage: user-mgr [ [-add|-a ] | [ -d|-del ] | [ -s|-search ] ] usernameexit2}functionsearch_user(){ifgrep-q$1${users_info_file};thenecho$1is existreturn0elseecho$1is not existreturn1fi}functionadd_user(){search_user$1/dev/nullif[$?-eq0];thenecho$1is already existelsechattr -i${users_info_file}echousername:$1${users_info_file}echoAdd User Success. chattr i${users_info_file}fi}functiondel_user(){search_user$1/dev/nullif[$?-eq1];thenecho$1is not existelsechattr -i${users_info_file}sed-i/.*$1/d${users_info_file}echoDel User Success. chattr i${users_info_file}fi}[$#-ne2]usagecase$1in-a|-add)shiftadd_user$1;;-d|-del)shiftdel_user$1;;-s|-search)shiftsearch_user$1;;*)usage;;esac执行验证[rootshell laoma]# cat /etc/users# 查找用户[rootshell laoma]# bash user-mgr -s laomalaoma is not exist# 添加用户[rootshell laoma]# bash user-mgr -a laomaAdd User Success.[rootshell laoma]# bash user-mgr -s laomalaoma is exist[rootshell laoma]# cat /etc/usersusername: laoma# 再次添加用户[rootshell laoma]# bash user-mgr -a laomalaoma is already exist# 删除用户[rootshell laoma]# bash user-mgr -d laomaDel User Success.# 再次删除用户[rootshell laoma]# bash user-mgr -d laomalaoma is not exist[rootshell laoma]# cat /etc/users# 其他测试多个参数[rootshell laoma]# bash user-mgr a b c# 其他测试普通用户执行[laomashell ~]$bashuser-mgr Please run as root5 case 条件语句的 Linux 系统脚本范例/etc/init.d/network提示network-scripts 软件包提供以上脚本。6 本章小结case 语句比较适合变量值较少且为固定的数字或字符串集合的情况如果变量的值是已知固定的start/stop/restart 等元素那么采用case语句来实现就比较适合。case语句和if条件语句的常见应用场景case主要是写服务的启动脚本一般情况下传参不同且具有少量的字符串其适用范围较窄。if就是取值判断、比较应用面比case更广。几乎所有的case语句都可以用if条件语句来实现。case语句就相当于多分支的if/elif/else语句但是case语句的优势是更规范、易读。