Shell编程之循环语句

博观而约取,厚积而薄发。这篇文章主要讲述Shell编程之循环语句相关的知识,希望能为你提供帮助。
Shell编程之循环语句(二) while循环语句

  • 重复测试某个文件,只要条件成立则反复执行
while 条件测试操作 do 命令序列 条件里的变量能够迭代 done

【Shell编程之循环语句】
Shell编程之循环语句

文章图片

例题: ①.批量添加用户,用户名称以stu开头,按数字顺序进行编号,一共添加20个用户,即stu1、stu2、……、stu20,初始登录码均为123456
#!/bin/bash #for name in 1..20 name=1 while [ $name -ge 0 -a $name -le 20 ] do useradd stu$name echo 123456 | passwd --stdin stu$name name=$[$name + 1] done #tail /etc/passwd

②.猜商品价格游戏,通过变量RANDOM获得随机数,提示用户猜测并记录次数,猜中后退出循环
#!/bin/bash CURRENT=$[RANDOM % 1000] a=1 num=0 while [ $a -eq 1 ] do read -p "请输入你猜测的价格(0~999):" price if [ $price -gt $CURRENT ]; then echo "猜高了,请重试!" let num++ elif [ $price -lt $CURRENT ]; then echo "猜低了,请重试!" let num++ elif [ $price -eq $CURRENT ]; then let num++ echo "恭喜你,猜对了!价格为 $price ,你一共猜了 $num 次" let a++ fi done

untli循环语句
  • 重复测试某个条件,只要条件不成立则反复执行
untli 条件测试 do 命令序列 条件里的变量能够迭代 done

Shell编程之循环语句

文章图片

例题: ①.计算1~50的和值,通过循环累加的方式计算1~50的和值
#!/bin/bash a=1 sum=0 until [ $a -gt 50 ] #-gt,因为我们要满足until(条件不成立则反复执行)的条件 do sum=$[$sum + $a] let a++ done echo "1~50累加的和值为: $sum"

②.为指定用户发送在线消息若用户不在线(未登录系统), 则每10分钟试一次,直至用户登录系统后在发送信息,用户名与消息通过位置参数传递给脚本
#!/bin/bash # example: ./write.sh < USENAME> [message] username=$1 nsg=$2 #用于判断执行脚本的格式是否携带了位置参数 if [ $# -lt 1 ]; then echo "USAGE: $0 < USENAME> [message]" exit 1 fi#用于判断携带的用户名参数是否正确 grep "^$username:" /etc/passwd > /dev/null if [ $? -ne 0 ]; then echo "$username 不是系统用户!" exit2 fi#用于判断系统用户是否已登录 who | grep "$username" > /dev/null while [ $? -ne 0 ]或until [ $? -eq 0 ] do echo "$username 尚未登陆系统,请先登录!" sleep 10 doneif [ ! -z "$msg" ]; then echo "执行命令:echo $msg | write $username" else msg="Hello $username,this is default message" echo "执行命令:echo $msg | write $username" fi


    推荐阅读