嵌入式 Shell中while迴圈語句
阿新 • • 發佈:2019-01-09
while迴圈
while迴圈能夠重複執行一系列的命令,直到某種條件發生,先決條件是while後面的條件返回值,如果while後的命令執行成功,或條件真,則執行do和done之間的語句,執行完成後,再次判斷while後的命令和條件;如果while後的命令執行失敗,或條件為假,迴圈結束,與for迴圈的區別是,這種結構適合用在迴圈次數未知的情況下.
基本語法:
- while [condition]
- do
- command...
- done
- condition是一個條件測試命令,command是一個或多個命令的列表。
- 1.執行condition
- 2.如果condition的退出狀態為非0,則退出迴圈
- 3.如果condition的退出狀態為0,則執行command
- 4.當command結束時,回到第一步
如以下案例:
- [[email protected] ~]# cat4.sh
- #!/bin/bash
- i=0
- while [ $i -lt 10 ]
- do echo$i
- i=`expr$i + 1`
- done
- [[email protected] ~]# sh -x4.sh
- + i=0
- + '[' 0 -lt 10 ']'
- + echo 0
- 0
- ++ expr 0 + 1
- + i=1
- + '[' 1 -lt 10 ']'
- + echo 1
- 1
- ++ expr 1 + 1
通過以上的案例,那麼就非常容易去理解巢狀迴圈了,而abs-guide對巢狀迴圈的定義如下: 巢狀迴圈就是在一個迴圈中還有一個迴圈,內部迴圈在外部迴圈體中.在外部迴圈的每次執行過程中都會觸發 內部迴圈,直到內部迴圈執行結束.外部迴圈執行了多少次,內部迴圈就完成多少次.當然,不論是外部迴圈或 內部迴圈的break 語句都會打斷處理過程. 下面來看一個比較經典的巢狀迴圈案例: [[email protected] ~]# cat 6.sh #!/bin/bash x=0 while [ "$x" -lt 10 ]; do y="$x" while [ "$y" -ge 0 ]; do echo -n "$y" y=`expr $y - 1` done echo "$x" x=`expr $x + 1` done 執行結果如下: 00 101 2102 32103 432104 5432105 65432106 765432107 8765432108 98765432109 這些是比較基本的迴圈了,但萬變不離其宗,個人認為理解指令碼的執行過程是比較重要,那麼sh -x就是一個 重要的除錯命令了!