shell 脚本:while 循环案例
通过判断条件是否成⽴,对其进⾏循环,若条件成⽴,则⼀直执⾏循环体中的命令序列,若条件不成⽴,则退出循环。
在使⽤while循环的时候,其还与for循环不同,for循环的循环是有限的,也就是你所指定的某些数据进⾏循环。⽽while是根据你指定的条件对其进⾏循环,若条件⼀直成⽴,则⼀直循环。这个时候,我们就要避免出现死循环的情况,否则后续命令也⽆法执⾏。语法
while 条件判断
do
命令序列
done
简单案例
例1:简单使⽤⼀下循环,a的值⼩于5,则循环加⼀,直到⼤于或等于5
执⾏效果:
例2:设置⼀个从1加到n的⼩案例
执⾏效果:#!/bin /bash #date :2020-3-2#描述:for 简单案例a =1while  [ $a -lt 5 ]do a =$[$a +1]echo "a 的值为$a"done
1
2
3
4
5
6
7
8
9[root@linus ~]# sh while_test .sh a 的值为2a 的值为3a 的值为4a 的值为5
1
2
3
4
5#!/bin /bash #date :2020-3-2#描述:for 简单案例read -p "请输⼊从1加到哪⾥:" num a =1b =0while  [ $a -le $num ]do b =$[$b +$a ]let  a ++done echo    "结果为$b"
1
2
3
4
shell最简单脚本
5
6
7
8
9
10
11
12[root@linus ~]# sh while_test .sh 请输⼊从1加到哪⾥:2
结果为3
1
2
3
例3:批量⾃主添加⽤户脚本,并提⽰是否设置过期时间
执⾏效果:
例4:批量⾃主删除⽤户脚本,并提⽰是否继续删除
执⾏效果:#!/bin /bash #date :2020-3-2#描述:批量添加⽤户脚本read -p "你想创建⼏个⽤户:" num a =0while  [ $a -lt $num ]do  read -p "请输⼊需要创建的⽤户:" name read -p "请输⼊⽤户密码:" passwd read -p "是否设置过期时间(yes|no):" date case  $date in yes |YES |Y |y ) read -p "请输⼊过期时间:" date2 useradd -e $date2 $name  ;;NO |no |N |n ) echo "⽆过期时间,直接创建" useradd $name  ;;*) echo "输⼊为其他字符,使⽤默认选项,⽆过期时间" useradd $name esac echo "$passwd" | passwd --stdin $name &>/dev /null echo "$name ⽤户创建成功"let  a ++done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27[root@linus ~]# sh while_user .sh 你想创建⼏个⽤户:1 请输⼊需要创建的⽤户:caiwu 请输⼊⽤户密码:caiwu 是否设置过期时间(yes |no ):yes 请输⼊过期时间:2020-3-9
caiwu ⽤户创建成功
1
2
3
4
5
6
7#!/bin /bash #date :2020-3-2#描述:批量删除⽤户脚本daan  (){read -p "是否要删除⽤户(yes|no):" daan }daan while  [ $daan = yes ]do read -p "请输⼊要删除的⽤户:" user userdel -r $user echo "$user ⽤户已删除"daan done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
例5:猜测商品价格⼩游戏
执⾏效果:[root@linus ~]# sh while_del .sh 是否要删除⽤户(yes |no ):yes 请输⼊要删除的⽤户:user user ⽤户已删除是否要删除⽤户(yes |no ):no 1
2
3
4
5#!/bin /bash #date :2020-3-2#描述:猜测商品价格游戏a =`expr $RANDOM % 100`while  true do read -p "输⼊商品价格(0-100):" int if  [ $int -eq $a ]then        echo "恭喜你,猜对了"        exit 0elif [ $in
t -gt $a ]then        echo "猜测价格⾼于实际价格"else        echo "猜测价格低于实际价格"fi done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1617
18[root@linus ~]# sh for_game .sh 输⼊商品价格(0-100):40猜测价格⾼于实际价格输⼊商品价格(0-100):30猜测价格低于实际价格输⼊商品价格(0-100):37猜测价格⾼于实际价格输⼊商品价格(0-100):35猜测价格⾼于实际价格输⼊商品价格(0-100):33猜测价格⾼于实际价格输⼊商品价格(0-100):31猜测价格低于实际价格输⼊商品价格(0-100):32
恭喜你,猜对了1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。