二层循环
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