目录
1.for循环
例题
2.while循环
例题
3.until循环
1.for循环
读取不同的变量值,用来逐个执行同一组命令
for 变量 in 取值列表
do
命令序列
done
[root@localhost ~]# for i in 1 2 3
> do
> echo "第 $i 次跳舞"
> done
第 1 次跳舞
第 2 次跳舞
第 3 次跳舞
[root@localhost ~]#[root@localhost ~]# for i in {1..3}
> do
> echo $i
> done
1
2
3
[root@localhost ~]#
for (变量-初始值;变量范围;变量的迭代方式)
do
命令序列
done
[root@localhost ~]# for ((i=1;i<=10;i++))
> do
> echo $i
> done
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# echo $i
11
[root@localhost ~]#
例题
1、计算从1到100所有整数的和
#!/bin/bash
#计算从1到100所有整数的和
sum=0
for ((i=1;i<=100;i++))
{sum=$[ sum + $i ]
}
echo "1到100的和为 $sum"
2、提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
#!/bin/bash
#提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和# 提示用户输入一个小于100的整数
read -p "请输入一个小于100的整数:" number# 初始化求和变量为0
sum=0# 使用for循环计算从1到用户输入数字的整数和
for (( i=1; i<=$number; i++ )); dosum=$((sum + i))
done# 输出结果
echo "从1到 $number 的所有整数的和为:$sum"
3、求从1到100所有整数的偶数和、奇数和
#!/bin/bash
#求从1到100所有整数的偶数和、奇数和# 初始化偶数和奇数的和为0
sum_even=0
sum_odd=0# 使用for循环遍历从1到100的所有整数
for i in {1..100}
do # 检查当前数字是偶数还是奇数 if (( $i % 2 == 0 )); then # 如果是偶数,则加到偶数和上 sum_even=$((sum_even + i)) else # 如果是奇数,则加到奇数和上 sum_odd=$((sum_odd + i)) fi
done # 输出结果
echo "从1到100的所有整数的偶数和为:$sum_even"
echo "从1到100的所有整数的奇数和为:$sum_odd"
4、检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中
#!/bin/bash
#检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中for num in {0..255}
do{hostip="192.168.10.$num"ping -c 4 -i 0.5 -W 2 $hostip &> /dev/nullif [ $? -eq 0 ];thenecho "$hostip is online" >> /root/host_ipfi}&
done
wait
cat /root/host_ip
5、用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警
#!/bin/bash
#用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警for i in {1..3}
doread -p "请输入密码" passwdif [ "$passwd" == "123456" ];thenecho "密码正确"exitelseecho "密码错误"fi
doneecho "报警"
6、编写能够自动生成一个6位随机密码的脚本
#!/bin/bash
#编写能够自动生成一个6位随机密码的脚本STR="0123456789qwertyuiopasdfghjklzxcvbnm"for ((i=1;i<=6;i++))
donum=$[RANDOM % ${#STR}]passwd=${STR:num:1}password+=$passwd
doneecho "6位随机密码为 $password"
2.while循环
重复测试某个条件,只要条件成立则反复执行
[root@localhost ~]# a=1
[root@localhost ~]# while [ $a -le 10 ]
> do
> echo $a
> let a++
> done
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]#
例题
1、计算从1到100所有整数的和
#!/bin/bash
#计算从1到100所有整数的和a=1
sum=0
while [ $a -le 100 ]
dosum=$[ sum + $a ]let a++
doneecho "1到100的和为 $sum"
2、提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
#!/bin/bash
#提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和a=1
sum=0
read -p "请输入一个小于100的整数:" numif [ $num -ge 1 ] && [ $num -le 100 ];thenwhile [ $a -le $num ]
dolet sum+=alet a++
doneecho "从1到该数之间所有整数的和为:$sum "
elseecho "输入有误!"
fi
3、求从1到100所有整数的偶数和、奇数和
#!/bin/bash
#求从1到100所有整数的偶数和、奇数和a=1jisum=0
ousum=0
while [ $a -le 100 ]
dob=$[ a % 2 ]if [ $b -eq 0 ];thenlet ousum+=$aelselet jisum+=$afilet a++
doneecho -e "从1到100的所有整数的偶数和为:$ousum\n 奇数和为:$jisum"
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 "输错三次,报警"
5、编写能够自动生成一个6位随机密码的脚本
#!/bin/bash
#编写能够自动生成一个6位随机密码的脚本i=0
STR="0123456789qwertyuiopasdfghjklzxcvbnm"while [ $i -lt 6 ]
donum=$[RANDOM % ${#STR}]passwd=${STR:num:1}password+=$passwdlet i++
done
echo "6位随机密码为 $password"
3.until循环
until 语句,它与 while 不同之处在于,是当条件表达式为 false 时才循环,实际使用中比较少
until [ $i -gt 10 ];doecho $ilet i++sum=$(($sum+$i))
done