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 退出当前循环