博观而约取,厚积而薄发。这篇文章主要讲述Shell编程之循环语句相关的知识,希望能为你提供帮助。
Shell编程之循环语句(二)
while循环语句
- 重复测试某个文件,只要条件成立则反复执行
while 条件测试操作
do
命令序列
条件里的变量能够迭代
done
【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
文章图片
例题: ①.计算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
推荐阅读
- #yyds干货盘点#linux命令--pwd,ls,cd,alias,du
- ceph对接openstack故障问题解决
- #yyds干货盘点# 实现渐变文字和文字倒影
- 数据恢复之希捷硬盘ST1000DM001盘片划伤二次开盘恢复成功
- 那颗想要精益求精,探寻系统了解学习的心
- #yyds干货盘点#Windows Server之创建和配置DHCP服务器
- Rhel8部署yum源方法二()
- Ubuntu 16.04 mkfs 没有 xfs#yyds干货盘点#
- maven构建本地仓库