目录
一.循环语句
1.for语句的结构
1.1.格式
1.2.实操案例
案例1.
案例2.
案例3.
案例4.
2.while语句的结构
2.1.格式
2.2.实操案例
案例1.
案例2.
案例3.
案例4.
3.until循环命令
3.1.格式
3.2.实操案例
案例1.
二.补充
1.常用转义符
一.循环语句
1.for语句的结构
- 读取不同的变量值,用来逐个执行同一组命令
1.1.格式
第一种for 变量 in 取值列表for i in $(seq 1 10)
do命令序列....
done第二种for ((变量=初始值; 变量范围; 变量的迭代方式))for ((i=1; i<=10; i++))
do命令序列....
donefor 循环实现多线程for ((i=1; i<=10; i++))
do{命令序列....}& 将每次循环的进程都放入后台自行运行
done
wait 等待上面所有循环的进程都执行完毕后再执行后面的命令
1.2.实操案例
案例1.
批量添加用户
- 用户名存放在users.txt文件中,每行一个初
- 始密码均设为123456
- 验证脚本
案例2.
计算从1到100所有整数的和
#!/bin/bash
#计算从1到100所有整数的和sum=0
for i in {1..100};
dosum=$(($i+$sum))
doneecho "$sum"
[root@localhost ~]# vim demo1.sh
[root@localhost ~]# chmod +x demo1.sh
[root@localhost ~]# ./demo1.sh
5050
案例3.
提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
#!/bin/bash
#输入一个小于100的整数,并计算从1到该数之间所有整数的和read -p "请输入一个小于100的整数: " num
if [ $num -eq 1 ];
thenecho "和等于: $num"
sum=0
elif [ $num -gt 1 ]&& [ $num -lt 100 ];
thenfor ((i=l;i<=$num; i++))
do let sum=$sum+$idoneecho "1到$num的和为$sum"
elseecho "输入错误"
fi
[root@localhost ~]# vim demo2.sh
[root@localhost ~]# chmod +x demo2.sh
[root@localhost ~]# ./demo2.sh
请输入一个小于100的整数: 45
1到45的和为1035
[root@localhost ~]# ./demo2.sh
请输入一个小于100的整数: 1
和等于: 1
[root@localhost ~]# ./demo2.sh
请输入一个小于100的整数: 86
1到86的和为3741
案例4.
使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数
#!/bin/bash
#使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数read -p "麻溜的给我输入一个0-255之间的数: " numfor i in {1..8}
do a=$[num % 2]$alet num=$[num / 2]
doneecho $a
[root@localhost ~]# vim demo3.sh
[root@localhost ~]# chmod +x demo3.sh
[root@localhost ~]# ./demo3.sh
麻溜的给我输入一个0-255之间的数: 25
00011001
[root@localhost ~]# ./demo3.sh
麻溜的给我输入一个0-255之间的数: 254
11111110
[root@localhost ~]# ./demo3.sh
麻溜的给我输入一个0-255之间的数: 215
11010111
2.while语句的结构
- 重复测试某个条件,只要条件成立则反复执行(相反于until)
2.1.格式
while [ 判断 ] 条件成立时才会循环执行do里面的命令序列
do命令序列
let i++ 类似的语句
done
2.2.实操案例
案例1.
计算从1到100所有整数的和
#!/bin/bash
#计算从1到100所有整数的和sum=0
i=0while [ $i -le 100 ]
dosum=$[ $sum + $i ]i=$[ i + 1 ]
doneecho "1-100所有整数的和为;" $sum
[root@localhost ~]# vim demo1.sh
[root@localhost ~]# bash demo1.sh
1-100所有整数的和为; 5050
案例2.
提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
#!/bin/bash
#提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和sum=0
i=1read -p "麻溜的给我输入一个0-100的整数: " numif [ $num -le 100 ];thenwhile [ $i -le $num ]dosum=$[ sum + i ]i=$[ i + 1 ]doneecho "1-$num的和为: $sum"elseecho "完蛋玩意,要输入小于100的整数"fi
[root@localhost ~]# vim demo2.sh
[root@localhost ~]# bash demo2.sh
麻溜的给我输入一个0-100的整数: 25
1-25的和为: 325
[root@localhost ~]# bash demo2.sh
麻溜的给我输入一个0-100的整数: 88
1-88的和为: 3916
案例3.
求从1到100所有整数的偶数和、奇数数
#!/bin/bash
#求从1到100所有整数的偶数和、奇数数sum1=0
sum2=0
i=0while [ $i -le 100 ]
doa=$[ i % 2 ]if [ $a -eq 0 ];thensum1=$[ sum1 + i ]elsesum2=$[ sum2 + i ]filet i++
done
echo "1到100的偶数和为$sum1"
echo "1到100的奇数和为$sum2"
[root@localhost ~]# vim demo3.sh
[root@localhost ~]# bash demo3.sh
1到100的偶数和为2550
1到100的奇数和为2500
案例4.
用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连>续输错
3次则报警
#!/bin/bash
#用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警
i=1
while [ $i -le 3 ]doread -p "请输入密码:" passwdif [ "$passwd" == "123456" ];thenecho "密码正确"exit 0elseecho "密码错误"filet i++done
echo "警告,密码已输错三次"
[root@localhost ~]# vim demo6.sh
[root@localhost ~]# bash demo6.sh
请输入密码:52
密码错误
请输入密码:52
密码错误
请输入密码:546
密码错误
警告,密码已输错三次
[root@localhost ~]# bash demo6.sh
请输入密码:123456
密码正确
3.until循环命令
- 重复测试某个条件,只要条件不成立则反复执行(相反于while)
3.1.格式
until [ 条件表达式 ] 条件不成立时才会循环执行do里面的命令序列
do命令序列
....变量的迭代方式
done
3.2.实操案例
案例1.
用until循环求1到100的和
#!/bin/bash
#用until循环求1到100的和sum=0
i=0until [ $i -gt 100 ]
dosum=$[sum+i]let i++
done
echo "输出1到100的和:$sum"
[root@localhost ~]# vim demo11.sh
[root@localhost ~]# bash demo11.sh
输出1到100的和:5050