shell循環結構_乘法口訣表

shell提供的循環結構有三種:until while for

分別用三種實現乘法口訣表。
在這裏插入圖片描述

while

語法 while test-commands; do consequent-commands; done

  • while是條件不成立,才退出。
    test-commands的返回值爲0表示成功,非零表示失敗。和其他語言有點不同。
  • while是一個代碼段,可以看成一個完整的指令,退出狀態碼是最後一條指令的執行結果,如果do done之間沒有指令,那麼返回0
iiter=1
while [ $iiter -lt 10 ]
do
    jiter=1
    while [ $jiter -le $iiter ]
    do
        echo -n "$iiter*$jiter=$(($jiter*$iiter)) "
        jiter=$(($jiter+1))
    done
    echo ""
    iiter=$(($iiter+1))
done

until

語法

until test-commands; do consequent-commands; done

  • until是條件成立,才退出。
    test-commands的返回值爲0表示成功,非零表示失敗。和其他語言有點不同。
  • until是一個代碼段,可以看成一個完整的指令,退出狀態碼是最後一條指令的執行結果,如果do done之間沒有指令,那麼返回0
iiter=1
until [ $iiter -ge 10 ]
do
    jiter=1
    until [ $jiter -gt $iiter ]
    do
        echo -n "$iiter*$jiter=$(($jiter*$iiter)) "
        jiter=$(($jiter+1))
    done
    echo ""
    iiter=$(($iiter+1))
done

在這裏插入圖片描述

for

語法

for name [ [in [words …] ] ; ] do commands; done
words會進行單詞擴張,[word ...]表示一個集合,word擴張同屬於集合。如果in words沒有,那麼就默認填充in $@。如下所示。
在這裏插入圖片描述
可以看成一個完整的指令,退出狀態碼是最後一條指令的執行結果,如果do done之間沒有指令,那麼返回0
for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
這一種for循環和C語言幾乎一模一樣。除了裏面的指數運算不一樣,其他的都是一樣的邏輯運算,優先級也一樣。

同樣也有break continue

for i in {1..9}
do
    for j in `seq 1 $i`
    do
        echo -n "$i*$j=$(($i*$j)) "
    done
    echo ""
done

for (( i=1 ; i < 10 ; i++ ))
do
    for (( j=1 ; j < $i ; j++ ))
    do
    echo -n "$j*$i=$(($i*$j)) "
    done
    echo ""
done

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章