单重循环
for循环
需要指定一个变量及取值列表,针对每个不同的取值重复执行相同的命令序列,直到变量值用完退出循环。适用于对象列表无规律,且列表来源固定的场合。
格式1:
for 变量名 in 取值列表
do
命令语句
done
格式2:
// Shell脚本for循环
for ((i=0;i<=10;i++))
do
命令语句
done
while循环
对于要求控制循环次数,操作对象按数字顺序编号,按特定条件执行重复操作等情况
格式:
while 条件测试操作
do
命令语句
done
#!/bin/bash
# while循环
i=1
while [ $i -le 5 ]
do
echo "a"
i=$(($i+1))
done
双重循环
双重循环顾名思义就是在一层循环里面再套一层循环,同时有2个变量控制循环,这里介绍一些双重循环的经典案例
九九乘法表
#!/bin/bash
# 99乘法表
#!/bin/bash
# 99乘法表
for ((i=1;i<=9;i++))
do
for((j=1;j<=$i;j++))
do
a=$(($i*$j))
echo -n "$i*$j=$a "
done
echo
done
[root@server1 ~]# ./99cfb.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<=5;i++))
do
for ((j=5;j>=i;j--))
do
echo -n " "
done
for ((k=1;k<=i;k++))
do
echo -n "* "
done
echo
done
[root@server1 ~]# chmod +x sjx.sh
[root@server1 ~]# ./sjx.sh
*
* *
* * *
* * * *
* * * * *
求1到100间的所有质数
#!/bin/bash
# 求1-100的素数
for ((i=1;i<=100;i++))
do
flag="false"
for((j=2;j<$i;j++))
do
res=$(($i%$j))
if [ $res -eq 0 ]
then flag="true"
break
fi
done
if [ $flag = "false" ]
then echo "$i是素数 "
fi
done
[root@server1 ~]# chmod +x zhishu.sh
[root@server1 ~]# ./sushu.sh
1是素数
2是素数
3是素数
5是素数
7是素数
11是素数
13是素数
17是素数
19是素数
23是素数
29是素数
31是素数
37是素数
41是素数
43是素数
47是素数
53是素数
59是素数
61是素数
67是素数
71是素数
73是素数
79是素数
83是素数
89是素数
97是素数