Shell多层循环&&利用循环语句输出简单图形
二层循环
for 语句
#!/bin/bash
for ((i=1; i<=10; i++))
do
echo "outer loop:$i"
for ((j=1; j<=5; j++))
do
echo "--inter loop:$j"
done
done
while 语句
#!/bin/bash
a=1
while [ $a -le 5 ]
do
echo "outer loop:$a"
b=1
while [ $b -le 10 ]
do
echo "--inter loop:$b"
let b++
done
let a++
done
三层循环
#!/bin/bash
for ((i=1; i<=10; i++))
do
echo "outer loop:$i"
for ((j=1; j<=5; j++))
do
echo "--1st inter loop:$j"
for ((k=1; k<=3; k++))
do
echo "---2nd inter loop:$k"
done
done
done
break 跳出单个循环
for 语句
#!/bin/bash
for ((a=1; a<=5; a++))
do
echo "outer loop:$a"
for ((b=1; b<=50; b++))
do
if [ $b -eq 5 ];then
break
fi
echo "--inter loop:$b"
done
done
while 语句
#!/bin/bash
a=1
while [ $a -le 5 ]
do
echo "outer loop:$a"
b=0
while [ $b -le 10 ]
do
let b++
if [ $b -ge 4 -a $b -le 8 ];then
break
fi
echo "--inter loop:$b"
done
let a++
done

continue 中止某次循环中的命令,但不会完全中止整个命令
for 语句
#!/bin/bash
for ((a=1; a<=15; a++))
do
if [ $a -gt 5 ] && [ $a -lt 10 ];then
continue
fi
echo "current value:$a"
done
while 语句
#!/bin/bash
a=1
while [ $a -le 5 ]
do
echo "outer loop:$a"
b=0
while [ $b -lt 10 ]
do
let b++
if [ $b -ge 4 -a $b -le 8 ];then
continue
fi
echo "--inter loop:$b"
done
let a++
done

多层循环中的break命令
#!/bin/bash
for ((i=1; i<=10; i++))
do
echo "outer loop:$i"
for ((j=1; j<=5; j++))
do
echo "--1st inter loop:$j"
for ((k=1; k<=3; k++))
do
echo "---2nd inter loop:$k"
if [ $k -eq 2 ];then
break
fi
done
done
done

break 后跟数字?表示跳出?层循环
#!/bin/bash
for ((i=1; i<=10; i++))
do
echo "outer loop:$i"
for ((j=1; j<=5; j++))
do
echo "--1st inter loop:$j"
for ((k=1; k<=3; k++))
do
echo "---2nd inter loop:$k"
if [ $k -eq 2 ];then
break 2
fi
done
done
done

输出一行字符串
#!/bin/bash for ((i=1; i<=20; i++)) do echo -n "*" done echo ""

输出一个由字符串组成的矩形
#!/bin/bash
for ((i=1; i<=10; i++))
do
for ((j=1; j<=20; j++))
do
echo -n "*"
done
echo ""
done

输出一个空心矩形
#!/bin/bash
for ((i=1;i<=10;i++))
do
if [ $i -eq 1 -o $i -eq 10 ];then
for ((j=1;j<=20;j++))
do
echo -n "*"
done
echo ""
else
echo -n "*"
for ((k=1;k<=18;k++))
do
echo -n " "
done
echo "*"
fi
done

输出一个三角形
#!/bin/bash
for ((i=1; i<=9; i++))
do
for ((j=1; j<=i; j++))
do
echo -n "*"
done
echo ""
done

输出一个倒三角形
#!/bin/bash
for ((i=1; i<=9; i++))
do
for ((j=9; j>=i; j--))
do
echo -n "*"
done
echo ""
done

输出一个反三角形
#!/bin/bash
for ((i=1; i<=9; i++))
do
for ((j=9; j>=i; j--))
do
echo -n " "
done
for ((k=1; k<=i; k++))
do
echo -n "*"
done
echo ""
done

输出一个等腰三角形
方法一
#!/bin/bash
for ((i=1; i<=9; i++))
do
for ((j=9; j>=i; j--))
do
echo -n " "
done
for ((k=1; k<=i; k++))
do
echo -n "*"
done
for ((g=2; g<=i; g++))
do
echo -n "*"
done
echo ""
done
方法二
#!/bin/bash
for ((i=1; i<=9; i++))
do
for ((j=9; j>=i; j--))
do
echo -n " "
done
for ((k=1; k<=$[$i*2-1]; k++))
do
echo -n "*"
done
echo ""
done

输出一个倒等腰三角形
#!/bin/bash
for ((i=9; i>=1; i--))
do
for ((j=9; j>=i; j--))
do
echo -n " "
done
for ((k=1; k<=$[$i*2-1]; k++))
do
echo -n "*"
done
echo ""
done

输出一个菱形
#!/bin/bash
for ((i=1; i<=9; i++))
do
for ((j=9; j>=i; j--))
do
echo -n " "
done
for ((k=1; k<=$[$i*2-1]; k++))
do
echo -n "*"
done
echo ""
done
for ((i=10; i<=17; i++))
do
for ((j=0; j<=$[$i-9]; j++))
do
echo -n " "
done
for ((k=8; k>=$[$i-9]; k--))
do
echo -n "*"
done
for ((g=7; g>=$[$i-9]; g--))
do
echo -n "*"
done
echo ""
done

输出一个可变大小的菱形
#!/bin/bash
read -p "enter a variate:" N
for ((i=1; i<=$N; i++))
do
for ((j=$N; j>=i; j--))
do
echo -n " "
done
for ((k=1; k<=$[$i*2-1]; k++))
do
echo -n "*"
done
echo ""
done
for ((i=$[$N+1]; i<=$[$N*2-1]; i++))
do
for ((j=0; j<=$[$i-$N]; j++))
do
echo -n " "
done
for ((k=$[$N-1]; k>=$[$i-$N]; k--))
do
echo -n "*"
done
for ((g=$[$N-2]; g>=$[$i-$N]; g--))
do
echo -n "*"
done
echo ""
done

输出一个平行四边形
#!/bin/bash
for ((i=1; i<=6; i++))
do
for ((j=1; j<=i; j++))
do
echo -n " "
done
for ((k=1; k<=6; k++))
do
echo -n "*"
done
echo ""
done

输出一个九九乘法表
#!/bin/bash for i in `seq 9` do for j in `seq 9` do [ $j -le $i ] && echo -n -e "$i*$j=`echo $(($i*$j))`\t" done echo "" done

浙公网安备 33010602011771号