While
While循环语句:满足条件才会执行循环,不满足就结束,用于不知道循环次数,需要主动结束循环或者达到条件循环的场景
While的结构
while(条件判断)——do —— 命令序列 —— done
如:用while循环语句求出1-100的总和
[rootalocalhost opt]# vim sum.sh
i=l
sum=0
while [ si -le 100 ]
do
Sum=$(($sum+$i))
let i++
done
echo "$sum"
[rootalocalhost opt]# sh 10.sh
5050
在命令序列结尾加上 “let i++”,为了防止死循环。
死循环
while true —— 就是写死循环的方法
随机数变量表达:$RANDOM表示随机生成一个数字
例:猜数字
[root@localhost opt]# vim 13.sh
num=$(($RANDOM%100+1))
time=0
while true
do
read -p "请输入一个整数:" num1
let time++
if [ $num -eq $num1 ]
then
echo "你猜对了"
echo "一共猜了${time}次"
break
elif [ $num1 -gt $num ]
then
echo "你猜大了"
else
echo "你猜小了"
fi
done
[root@localhost opt]# sh 13.sh
请输入一个整数:50
你猜小了
请输入一个整数:80
你猜大了
请输入一个整数:60
你猜小了
请输入一个整数:70
你猜大了
请输入一个整数:65
你猜大了
请输入一个整数:63
你猜大了
请输入一个整数:62
你猜对了
一共猜了7次
RANDOM%+1:表示系统在1-100范围之间随机生成一个数字,用户猜大或猜小了都会有提示,猜对了并提升你共猜了几次。
Until
Until语句用来重复测试某个语句,只要当判断条件不成立时就进行循环,条件成立时终止循环
Until语句格式
until [条件测试语句] —— do —— 命令序列 —— done
与While语句格式相似
例:算1-100的总和
[rootalocalhost opt]# vim sum.sh
5050
i=0
sum=0
until [ $i -gt 10 ]
do
sum=$(($i+ssum))
let i++
done
echo $sum
[rootalocalhost opt]# sh sum.sh
5050
实验
实验一
实验二
While循环求和
Until循环求和
实验三
实验四
实验五
#用户名存放在users.txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,
输出提示该用户已存在;用户存在但没设密码,则提示用户并让用户设置密码;
若该用户不存在,提示用户输入密码,建立用户并设立其密码
[root@localhost opt]# vim yonghu.sh
for user in `cat /opt/users.txt`
do
cat /etc/passwd | awf -F: `{print $1}` | grep "$user" &> /dev/null
if [ $? -eq 0 ]
then
echo "用户已存在"
res=$(cat /etc/shadow | grep "ky30" | awk -F: `{print $2}`)
if [ "$res" == !! ]
then
echo "用户存在,无密码,请创建"
echo "123456 | passwd --stdin $user"
else
echo "用户已创建密码"
fi
else
echo "用户不存在,创建用户"
useradd $user
echo "789" | passwd --stdin $user
fi
done