SHELL(循环语句的shell脚本)

tech2026-02-01  6

循环语句的shell脚本

一、通过for循环语句计算10的阶乘二、for循环批量新建用户三、计算1~100的奇数和四、计算1~50的偶数和五、 Shell脚本同步系统时间六、模拟一个多任务维护界面;当执行程序时先显示总菜单,然后进行选择后做相应维护监控操作


一、通过for循环语句计算10的阶乘

#!/bin/bash sum=1 for num in {2..10..1} do let sum=$sum*$num done echo $sum


二、for循环批量新建用户

需求: 批量新建5个用户stu1~stu5, 要求这几个用户的家目录都在/rhome 并统一加一个新组,组名为class,统一改密码为123 思路: 添加用户的命令 判断class组是否存在 根据题意,判断该脚本循环5次来添加用户 添加用户的时候使用 -d 添加家目录 -G 添加组 给用户设置密码,应该放到循环体里面

#!/bin/bash echo "1. Group " grep -w class /etc/group &>/dev/null if [ $? -eq 0 ];then echo "Group [class] exist" else groupadd class [ $? -eq 0 ] && echo "Group [class] create ok" || "Group [class] create failed" fi echo '2. User' for count in {1..5} do username="stu$count" id $username &> /dev/null if [ $? -eq 0 ];then echo "User $username exist" else useradd -G class -d /rhome $username echo "User $username create success" echo 123 | passwd --stdin $username fi done

三、计算1~100的奇数和

#!/bin/bash sum=0 for num in {1..100..2} do let sum=$sum+$num done echo $sum

四、计算1~50的偶数和

#!/bin/bash echo "------while----" num=0 i=1 while [ $i -le 50 ] do let i++ a=$[i%2] if [ $a -eq 0 ];then let num=$num+$i fi done echo $num echo "-------for-----" num=0 for i in {1..50} do a=$[i%2] if [ $a -eq 0 ];then let num=$num+$i fi done echo $num

五、 Shell脚本同步系统时间

代码如下(示例):

1. 项目具体需求 写一个脚本,30秒同步一次系统时间,时间同步服务器(自己搭建) 如果同步失败,则进行邮件报警,每次失败都报警 同步成功,也进行邮件通知,但是成功100次才通知一次 2. 项目思路 每个30s同步一次时间,该脚本是一个死循环 同步失败发送邮件 同步成功100次发送邮件 #成功发送邮件的操作准备 #1. install package:mailx、sendmail、postfix; #2. start postfix service:systemctl start postfix 、 systemctl enable postfix #3. echo "systemctl date success" | mail -s "time status" root #!/bin/bash sucessCount=0 while true do echo "Checking system date......" chronyc sources | grep '^*' &> /dev/null if [ $? -eq 0 ];then let sucessCount++ if [ $sucessCount -eq 100 ];then echo "system date sucess" | mail -s "check system date" root sucessCount=0 fi else echo "system date failed" | mail -s "check system date" root sucessCount=0 fi sleep 30 done

六、模拟一个多任务维护界面;当执行程序时先显示总菜单,然后进行选择后做相应维护监控操作

#!/bin/bash function menu(){ echo " h 显示命令帮助 f 显示磁盘分区 d 显示磁盘挂载 m 显示内存信息 u 查看系统负载 q 退出程序 " } menu while true do read -p "please input your choice (h|f|d|m|u|q): " choice case $choice in h) menu ;; f) echo "******磁盘分区信息******" blkid | cut -d : -f 1 ;; q) echo "退出程序,exiting......" exit 0 ;; m) echo "*******内存信息*********" free -m ;; d) echo "*******磁盘挂载*********" df ;; *) echo "please input (h) 显示命令帮助" ;; esac done

以上


最新回复(0)