shell 四之forwhileuntil 循环语句
Posted 遙遙背影暖暖流星
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 四之forwhileuntil 循环语句相关的知识,希望对你有一定的参考价值。
一、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
以上是关于shell 四之forwhileuntil 循环语句的主要内容,如果未能解决你的问题,请参考以下文章