【Shell脚本】Shell编程之循环语句

目录

一.循环语句

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

二.补充

1.常用转义符

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值