【Shell】shell编程之循环语句

目录

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

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值