雙重循環需勳在兩個及以上的自變量,通常用於多層循環判斷中,好比將行和列設爲兩個自變量按必定規則順序顯示數據,可經過Shell腳本作出各類排列圖形以及九九乘法表。c++
循環必須是有規律的遞增或遞減,腳本從上至下執行,在沒有break、exit、sleep、continue等結束語句時,循環語句塊會逐條執行。
內層循環是外層循壞的一條循環語句,當變量知足外層循環的條件時,就會進入外層循環執行外層循環語句,當變量知足內層循環的條件時,轉而執行內層循環,只有當內層循環結束纔會跳出內層循環,而後繼續外層循環語句的執行。shell
中止循環,直接退出執行腳本bash
跳出當前循環,默認爲break 1,後面數字爲跳出層數,例如break 2爲跳出2層循環。markdown
return表示退出函數並返回一個退出值,腳本中能夠用$?變量顯示該值
使用原則:
(1)函數一結束就取返回值,由於$?變量只返回執行的最後一條命令的退出狀態碼;
(2)退出狀態碼必須是0~255,超出時返回值將爲除以256後的取餘數。函數
終止某次循環中的命令,但不會徹底終止整個命令,而是直接跳過知足條件的循環,即知足條件不循環,轉而循環不知足的條件ui
sleep休眠,單位爲秒,將線程休眠規定時間後繼續執行,sleep(10)爲休眠10秒。spa
增長延時時間,單位爲0.4毫秒,即延時一秒爲delay(250)。線程
#!/bin/bash for ((a=1; a<=20; a++)) #循環20次 do echo -n "*" #不換行連續輸出* done echo "" #末尾換行
[root@localhost ~]# ./zhixian.sh
********************
#!/bin/bash for ((a=1; a<=5; a++)) #循環5次,設置行數 do for ((b=1; b<=8; a++)) #循環8次,設置列數 do echo -n "*" done echo 「」 done
[root@localhost ~]# ./4.sh
******** ******** ******** ******** ********
#!/bin/bash for ((a=1; a<=5; a++)) do if [ $a -eq 1 -o $a -eq 5 ];then for ((b=1; b<=8; b++)) do echo -n "*" done echo "" else echo -n "*" for ((c=1; c<=6; c++)) do echo -n " " done echo "*" fi done
[root@localhost ~]# ./kong4.sh
******** * * * * * * ********
#!/bin/bash for ((a=1; a<=6; a++)) do for ((b=1; b<=a; b++)) do echo -n "*" done echo "" done
[root@localhost ~]# ./3.sh
* ** *** **** ***** ******
#!/bin/bash for ((a=1; a<=6; a++)) do for ((b=6; b>=a; b--)) do echo -n "*" done echo "" done
[root@localhost ~]# ./dao3.sh
****** ***** **** *** ** *
#!/bin/bash for ((a=1; a<=6; a++)) do for ((b=6; b>=a; b--)) do echo -n " " done for ((c=1; c<=a; c++)) do echo -n "*" done echo "" done
[root@localhost ~]# ./fan3.sh
* ** *** **** ***** ******
#!/bin/bash for ((a=1; a<=9; a++)) do for ((b=9; b>=a; b--)) do echo -n " " done m=$[($a*2) - 1] for ((c=1; c<=$m; c++)) do echo -n "*" done echo "" done
[root@localhost ~]# ./dengyao3.sh
* *** ***** ******* ********* *********** ************* *************** *****************
#!/bin/bash for ((a=1; a<=6; a++)) do for ((b=6; b>=a; b--)) do echo -n " " done for ((c=1; c<=6; c++)) do echo -n "*" done echo "" done:::
[root@localhost ~]# ./pingxing4.sh ****** ****** ****** ****** ****** ******
#!/bin/bash for ((a=1; a<=6; a++)) do for ((b=6; b>=a; b--)) do echo -n " " done for ((c=1; c<=6+$a; c++)) do echo -n "*" done echo "" done
[root@localhost ~]# ./tixing.sh ******* ******** ********* ********** *********** ************
#!/bin/bash for ((a=1; a<=6; a++)) do for ((b=6; b>=a; b--)) do echo -n " " done for ((c=1; c<=6+$a; c++)) do echo -n "*" done for ((d=1; d<=a; d++)) do echo -n "*" done echo "" done
[root@localhost ~]# ./dengyaotixing.sh ******** ********** ************ ************** **************** ******************
#!/bin/bash for ((a=1; a<=9; a++)) do for ((b=8; b>=a; b--)) do echo -n " " done m=$[($a*2) - 1] for ((c=1; c<=$m; c++)) do echo -n "*" done echo "" done for ((e=8; e>=1; e--)) do for ((f=8; f>=e ; f--)) do echo -n " " done n=$[($e*2) - 1] for ((g=1 ; g<=$n ; g++)) do echo -n "*" done echo "" done
[root@localhost ~]# ./lingxing.sh
* *** ***** ******* ********* *********** ************* *************** ***************** *************** ************* *********** ********* ******* ***** *** *
#!/bin/bash read -p "請輸入數字:" num for ((a=1; a<=num; a++)) do for ((b=$num-1; b>=a; b--)) do echo -n " " done m=$[($a*2) - 1] for ((c=1; c<=$m; c++)) do echo -n "*" done echo "" done for ((e=$num-1; e>=1; e--)) do for ((f=$num-1; f>=e ; f--)) do echo -n " " done n=$[($e*2) - 1] for ((g=1 ; g<=$n ; g++)) do echo -n "*" done echo "" done
[root@localhost ~]# ./lingxing.sh
請輸入數字:5
* *** ***** ******* ********* ******* ***** *** * [root@localhost ~]# ./lingxing.sh 請輸入數字:8 * *** ***** ******* ********* *********** ************* *************** ************* *********** ********* ******* ***** *** *
#!/bin/bash for((i=0; i<10; i++)) { for ((j=1; j<20; j++)) { echo -n " " } for ((j=10; j>i; j--)) { echo -n " " } for ((j=0; j<i*2+1; j++)) { echo -n "*" } echo "" } for ((i=0; i<6; i++)) { for ((j=0; j<i*3; j++)) { echo -n " " } for ((j=60; j>i*6; j--)) { echo -n "*" } echo "" } for ((i=0; i<5; i++)) { for ((j=17; j>i; j--)) { echo -n " " } for ((j=0; j<25+i*2; j++)) { echo -n "*" } echo "" } for ((i=1; i<=5; i++)) { for ((j=12; j>=i; j--)) { echo -n " " } for ((j=15; j>=i*3; j--)) { echo -n "*" } for ((j=0; j<=i*8; j++)) { echo -n " " } for ((j=15; j>=i*3; j--)) { echo -n "*" } echo "" }
[root@localhost ~]# ./5jiao.sh
* *** ***** ******* ********* *********** ************* *************** ***************** ******************* ************************************************************ ****************************************************** ************************************************ ****************************************** ************************************ ****************************** ************************* *************************** ***************************** ******************************* ********************************* ************* ************* ********** ********** ******* ******* **** **** * *
#!/bin/bash for ((a=1; a<=9; a++)) do for ((b=1; b<=a; b++)) do sum=$[$a * $b] echo -n "$a*$b=$sum " done echo "" done
[root@localhost ~]# ./99.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