目录
一.循环语句
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
命令序列
....
done
for 循环实现多线程
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};
do
sum=$(($i+$sum))
done
echo "$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 ];
then
echo "和等于: $num"
sum=0
elif [ $num -gt 1 ]&& [ $num -lt 100 ];
then
for ((i=l;i<=$num; i++))
do
let sum=$sum+$i
done
echo "1到$num的和为$sum"
else
echo "输入错误"
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之间的数: " num
for i in {1..8}
do
a=$[num % 2]$a
let num=$[num / 2]
done
echo $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=0
while [ $i -le 100 ]
do
sum=$[ $sum + $i ]
i=$[ i + 1 ]
done
echo "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=1
read -p "麻溜的给我输入一个0-100的整数: " num
if [ $num -le 100 ];then
while [ $i -le $num ]
do
sum=$[ sum + i ]
i=$[ i + 1 ]
done
echo "1-$num的和为: $sum"
else
echo "完蛋玩意,要输入小于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=0
while [ $i -le 100 ]
do
a=$[ i % 2 ]
if [ $a -eq 0 ];then
sum1=$[ sum1 + i ]
else
sum2=$[ sum2 + i ]
fi
let 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 ]
do
read -p "请输入密码:" passwd
if [ "$passwd" == "123456" ];then
echo "密码正确"
exit 0
else
echo "密码错误"
fi
let 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=0
until [ $i -gt 100 ]
do
sum=$[sum+i]
let i++
done
echo "输出1到100的和:$sum"
[root@localhost ~]# vim demo11.sh
[root@localhost ~]# bash demo11.sh
输出1到100的和:5050