星河AI网络安全Agentic-SOC智能运营平台技术方案
2026/6/5 2:43:02
在case语句中,程序会将case获取的变量的值与表达式部分的值1、值2、值3等逐个进行比较:
case 条件语句的语法格式为:
case"变量值"in值1)指令1...;;值2)指令2...;;*)指令3...;;esac为了便于大家记忆,下面是某女生写的case 条件语句的中文形象描述:
case"找老公条件"in资产大于1千万) 嫁给你;;资产介于1百万和1千万之间) 再考虑以下;;资产小于1百万) 再见;;其他情况) 视情况而定;;esaccase 条件语句的执行流程逻辑图如下:
示例:判断用户输入的数字是否是1、2、3。
[laoma@shell ~]$catcase1.sh#!/bin/bashread-p"请输入一个1-3之间数字:"numcase$numin1)echo"您输入的数字是:$num";;2)echo"您输入的数字是:$num";;3)echo"您输入的数字是:$num";;*)echo"请输入一个1-3之间数字。";;esac# 执行验证[laoma@shell ~]$bashcase1.sh 请输入一个1-3之间数字:1 您输入的数字是:1[laoma@shell ~]$bashcase1.sh 请输入一个1-3之间数字:4 请输入一个1-3之间数字。[laoma@shell ~]$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';;*)echo"Usage:$0PASS|FAIL|DONE";;esac执行效果:
#!/bin/bashcase$1instart)systemctl start sshd;;stop)systemctl stop sshd;;restart|reload)systemctl restart sshd;;status)systemctl status sshd;;*)echo"Usage: case-ssh start|stop|restart|reload|status";;esac简化版:
#!/bin/bashcase$1instart|stop|restart|reload|status)systemctl$1sshd;;*)echo"Usage: case-ssh start|stop|restart|reload|status";;esac通过传参的方式往 /etc/users 里添加用户,具体要求如下。
命令用法为:
Usage: user-mgr [ [-add|-a ] | [ -d|-del ] | [ -s|-search ] ] username
传参要求为:
/etc/users 保存用户清单,格式如下:
username: laoma username: laowang/etc/users 不能被外部其他程序直接删除及修改。
参考答案:
答案1:
#!/bin/bash# run as root[$UID-ne0]&&echo'Please run as root'&&exit1# create users fileusers_info_file=/etc/users[-f${users_info_file}]||touch${users_info_file}# provides two argsif[$#-ne2];thenecho"Usage: user-mgr [ [-add|-a ] | [ -d|-del ] | [ -s|-search ] ] username"exit2fi# get arg valueaction=$1username=$2# manager usercase$actionin-s|-search)ifgrep-q"username:$username"${users_info_file};thenecho"$usernameis exist."elseecho"$usernameis not exist."fi;;-a|-add)ifgrep-q"username:$username"${users_info_file};thenecho"$usernameis exist."elsechattr -i${users_info_file}echo"username:$username">>${users_info_file}echo"$usernamehas been added."chattr +i${users_info_file}fi;;-d|-del)ifgrep-q"username:$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;;*)echo"Usage: user-mgr [ [-add|-a ] | [ -d|-del ] | [ -s|-search ] ] username";;esac答案2:
#!/bin/bash# run as root[$UID-ne0]&&echo'Please run as root'&&exit1# create users fileusers_info_file=/etc/users[-f${users_info_file}]||touch${users_info_file}functionusage(){echo"Usage: user-mgr [ [-add|-a ] | [ -d|-del ] | [ -s|-search ] ] username"exit2}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}echo"username:$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执行验证:
[root@shell laoma]# cat /etc/users# 查找用户[root@shell laoma]# bash user-mgr -s laomalaoma is not exist# 添加用户[root@shell laoma]# bash user-mgr -a laomaAdd User Success.[root@shell laoma]# bash user-mgr -s laomalaoma is exist[root@shell laoma]# cat /etc/usersusername: laoma# 再次添加用户[root@shell laoma]# bash user-mgr -a laomalaoma is already exist# 删除用户[root@shell laoma]# bash user-mgr -d laomaDel User Success.# 再次删除用户[root@shell laoma]# bash user-mgr -d laomalaoma is not exist[root@shell laoma]# cat /etc/users# 其他测试:多个参数[root@shell laoma]# bash user-mgr a b c# 其他测试:普通用户执行[laoma@shell ~]$bashuser-mgr Please run as root/etc/init.d/network
提示:network-scripts 软件包提供以上脚本。