Shell脚本的for语句和while语句

For循环语句

for循环是编程语言中一种循环语句,而循环语句由循环体及循环的判定条件两部分组成,其表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}

示意图

在这里插入图片描述

示例1

用for语句创建用户 stu1-stu10,密码为123123

[root@localhost mulu]# vim bk1.txt
1
2
3
4
5
6
7
8
9
10
[root@localhost mulu]# vim bk1.sh 
#!/bin/bash
us=`cat /mulu/bk1.txt`
for yh in $us
 do
  useradd yonghu$yh
  echo "成功创建用户yonghu$yh"
  echo "123123" | passwd --stdin yonghu$yh
 done
运行脚本
[root@localhost mulu]# source bk1.sh
成功创建用户yonghu1
更改用户 yonghu1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
成功创建用户yonghu2
更改用户 yonghu2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
成功创建用户yonghu3
更改用户 yonghu3 的密码 。
passwd:所有的身份验证令牌已经成功更新。
成功创建用户yonghu4
更改用户 yonghu4 的密码 。
passwd:所有的身份验证令牌已经成功更新。
成功创建用户yonghu5
更改用户 yonghu5 的密码 。
passwd:所有的身份验证令牌已经成功更新。
成功创建用户yonghu6
更改用户 yonghu6 的密码 。
passwd:所有的身份验证令牌已经成功更新。
成功创建用户yonghu7
更改用户 yonghu7 的密码 。
passwd:所有的身份验证令牌已经成功更新。
成功创建用户yonghu8
更改用户 yonghu8 的密码 。
passwd:所有的身份验证令牌已经成功更新。
成功创建用户yonghu9
更改用户 yonghu9 的密码 。
passwd:所有的身份验证令牌已经成功更新。
成功创建用户yonghu10
更改用户 yonghu10 的密码 。
passwd:所有的身份验证令牌已经成功更新。

示例2

自动在屏幕中输出1-20

#!/bin/bash
for ((i=1;i<=20;))
  do
   echo $i
   let i++
  done
[root@localhost mulu]# source sl2.sh 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

示例3

计算100内全部奇数和
变量+=2 每次加2
变量++ 每次加一
变量-=2 每次减2
变量*=2 每次乘二
变量/=2 每次除二
变量— 每次减1
let 执行,也可以使用 (())替代,二选一
加上 let 可以单独使用

[root@localhost mulu]# vim jsh.sh
#!/bin/bash
he=0
for ((i=1;i<=100;i++))
 do
  if [ `expr $i % 2` -ne 0 ]
   then
    let he+=$i
  fi
done
echo $he
~         
[root@localhost mulu]# source jsh.sh 
2500  

while循环语句

while是计算机的一种基本循环模式。当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。while语句的一般表达式为:while(表达式){循环体}。
在这里插入图片描述

示例1

输出100以内可以整除3的数字

[root@localhost mulu]# vim zc.sh
#!/bin/bash
i=0
while [ $i -le 100 ]        #条件 i 小于等于 100 循环,只要条件成立就一直循环
 do
  if [ `expr $i % 3` -eq 0 ]    #如果 i 取余3 等于 0
   then   
    echo $i                            #输出 i
  fi
 let i++                               #i每循环一次+1
done
运行脚本
[root@localhost mulu]# source zc.sh 
0
3
6
……太长了,中间略一点吧
90
93
96
99

示例2

列出 100 以内 不能整出3的数字

#!/bin/bash
i=100
while [ $i -gt 0 ]
 do
  if [ `expr $i % 3` -eq 0 ]
   then
    let i--
    continue
   else
    echo $i
    let i--
   fi
  # let i--
done
~      
[root@localhost mulu]# source yu3.sh 
[root@localhost mulu]# source yu3.sh 
100
98
97
95
94
…………中间太多啦……
10
8
7
5
4
2
1

continue 跳过本次continue以下执行语句,直接进入下一个循环
break 退出当前循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值