目录
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++ )); do
sum=$((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/null
if [ $? -eq 0 ];then
echo "$hostip is online" >> /root/host_ip
fi
}&
done
wait
cat /root/host_ip
5、用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警
#!/bin/bash
#用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警
for i in {1..3}
do
read -p "请输入密码" passwd
if [ "$passwd" == "123456" ];then
echo "密码正确"
exit
else
echo "密码错误"
fi
done
echo "报警"
6、编写能够自动生成一个6位随机密码的脚本
#!/bin/bash
#编写能够自动生成一个6位随机密码的脚本
STR="0123456789qwertyuiopasdfghjklzxcvbnm"
for ((i=1;i<=6;i++))
do
num=$[RANDOM % ${#STR}]
passwd=${STR:num:1}
password+=$passwd
done
echo "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 ]
do
sum=$[ sum + $a ]
let a++
done
echo "1到100的和为 $sum"
2、提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
#!/bin/bash
#提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
a=1
sum=0
read -p "请输入一个小于100的整数:" num
if [ $num -ge 1 ] && [ $num -le 100 ];then
while [ $a -le $num ]
do
let sum+=a
let a++
done
echo "从1到该数之间所有整数的和为:$sum "
else
echo "输入有误!"
fi
3、求从1到100所有整数的偶数和、奇数和
#!/bin/bash
#求从1到100所有整数的偶数和、奇数和
a=1
jisum=0
ousum=0
while [ $a -le 100 ]
do
b=$[ a % 2 ]
if [ $b -eq 0 ];then
let ousum+=$a
else
let jisum+=$a
fi
let a++
done
echo -e "从1到100的所有整数的偶数和为:$ousum\n 奇数和为:$jisum"
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 "输错三次,报警"
5、编写能够自动生成一个6位随机密码的脚本
#!/bin/bash
#编写能够自动生成一个6位随机密码的脚本
i=0
STR="0123456789qwertyuiopasdfghjklzxcvbnm"
while [ $i -lt 6 ]
do
num=$[RANDOM % ${#STR}]
passwd=${STR:num:1}
password+=$passwd
let i++
done
echo "6位随机密码为 $password"
3.until循环
until 语句,它与 while 不同之处在于,是当条件表达式为 false 时才循环,实际使用中比较少
until [ $i -gt 10 ];do
echo $i
let i++
sum=$(($sum+$i))
done