shell 四之for、while、until 循环语句

22 篇文章 1 订阅
4 篇文章 0 订阅

一、for循环语句

基本格式

for 变量名  in 取值列表
do
	命令序列
done        #表示结束

流程
在这里插入图片描述

1、取值范围

(1)列举法

for var in a1 b1 c1 d1    #则在循环时,	变量var 依次取var=a1,var=b1,var=c1,var=d1

(2)序列

for var in `seq 10`     #依次取1~10
for var in `seq $sum`

(3)花括号{}

for var in {1..100}     #一次取1~100
read -p “输入一个数值” num
for var in {1..`$num`}      #var依次取值1~$num,注意反撇号

(4) 从命令中取值

IFS=:       #以冒号作为分隔符
for i in `cat /etc/hosts`
do
	
 	echo -$i
done

在这里插入图片描述
在这里插入图片描述

(5)位置变量取值

for i in  $1 $2


--------------------------------------------
bash var.sh  100   200   #在执行脚本时带上的参数

(6)C 语言风格的for

#求100以内的偶数和
sum=0
for(( i=0;i<=100;i+=2))
do
let	sum=$sum+$i
done
echo $sum   


#求100以内的奇数和
sum=0
for(( i=1;i<=100;i+=2))
do
let	sum=$sum+$i
done
echo $sum   

#求100以内数的总和
sum=0
for(( i=0;i<=100;i++))
do
let	sum=$sum+$i
done
echo $sum   
#!/bin/bash
#批量创建用户stukai开头的10个用户
for i in {1..10}
do
useradd stu$i &> /dev/null
echo "123" |passwd --stdin stu$i &> /dev/null
edho "stu$i 已创建完成"
done

2、for中插入if语句

#!/bin/bash
#查看该网段的主机有多少存活
for i in {1..254}
do         
	ping -c 2 -i 0.1 192.168.100.$i $>/dev/null              
	if [ $? -eq 0 ];then
	echo "192.168.100.$i存活"
	else
	echo "192.168.100.$i不通"
	fi   #if语句结束
done    #for语句的结束
	

3、for的双重循环

外循环和内循环

#!/bin/bash
#打印直角三角形星星阵
read -p "请输入数字:" num
for ((i=1;i<=$num;i++))
do
for ((j=1;j<=$i;j++))  //外部循环每取一个值,内部循环完成满足条件的一次完整循环,之后跳出外面
do
echo -en "* "		//里面循环一次输出的值,-n不换行输出
done			//里面的for结尾
echo			//外面循环一次空格
done			//外面的for结尾
[root@localhost ~]# bash 星.sh 
请输入数字:4
* 
* * 
* * * 
* * * * 

#!/bin/bash
#打印正方形星星阵
read -p "请输入数字:" num
for ((i=1;i<=$num;i++))
do
        for ((j=1;j<=$num;j++))
        do
        echo -en "* "
        done
echo
done

[root@localhost ~]# . xing2.sh
请输入数字:5
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *

#!/bin/bash
#99乘法表
#!/bin/bash

nub=9
for i in `seq 9`
do
        for j in `seq 9`
        do
        if [ $i -ge  $j ] ;then
        s=$(($i*$j))
        echo -en  "$i*$j=$s  "
        fi
        done
echo
done

[root@localhost script脚本]# ./jiujiu.sh
1*1=1
2*1=2  2*2=4
3*1=3  3*2=6  3*3=9
4*1=4  4*2=8  4*3=12  4*4=16
5*1=5  5*2=10  5*3=15  5*4=20  5*5=25
6*1=6  6*2=12  6*3=18  6*4=24  6*5=30  6*6=36
7*1=7  7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49
8*1=8  8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64
9*1=9  9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81

打印等边三角形,如下
在这里插入图片描述

#!/bin/bash
for ((i=1; i<=9; i++))
do
  for ((a=9; a>=$i; a--))
  do
  echo -n " "  ##显示空格,可以用*号代替,可以更直观看出效果
  done
  for ((b=1; b<=$i*2-1; b++))
  do
  echo -n $i
  done
  echo ""
done


#!/bin/bash
#打印直角三角形星星阵
read -p "请输入边上星星个数:" num
for ((i=1;i<=$num;i++ ))
do
        for ((j=1; j<=$num; j++))
        do
        if [ $j -le $(($num-$i)) ];then
        echo -ne "  "
        else
        echo -ne "* "
        fi
        done
echo
done

▒[root@localhost script脚本]# . stat3.sh
请输入边上星星个数:6
          *
        * *
      * * *
    * * * *
  * * * * *
* * * * * *



二、while循环语句

#!/bin/bash
#100以内总和
i=1
sum=0
while [ $i -le 100 ]
do
let sum=$i+$sum
let i++
done
echo $sum
#!/bin/bash
#100以内偶数和
i=1
sum=0
while [ $i -le 100 ]
do
if [ $(($i%2)) -eq 0 ];then

let sum=$i+$sum

fi
let i++

done
echo $sum

[root@localhost ~]# bash qiuhe.sh 
2550

break :退出当前while循环,继续执行后面的脚本
continue:退出当前循环,继续执行下一个while循环
exit:退出脚本,不执行后续脚本

三、until循环语句

当条件不满足是进入循环
基本格式

until 条件测试条件
do
	命令序列
done

流程图
在这里插入图片描述

#!/bin/bash
#100以内偶数和
i=1
sum=0
until [ $i -gt 100 ]
do
if [ $(($i%2)) -eq 0 ];then

let sum=$i+$sum

fi
let i++

done
echo $sum

[root@localhost ~]# bash qiuhe.sh 
2550

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值