1. 程式人生 > >嵌入式 Shell中while迴圈語句

嵌入式 Shell中while迴圈語句

while迴圈
while迴圈能夠重複執行一系列的命令,直到某種條件發生,先決條件是while後面的條件返回值,如果while後的命令執行成功,或條件真,則執行do和done之間的語句,執行完成後,再次判斷while後的命令和條件;如果while後的命令執行失敗,或條件為假,迴圈結束,與for迴圈的區別是,這種結構適合用在迴圈次數未知的情況下.
基本語法:

  1. while [condition]
  2. do
  3. command...
  4. done
  5. condition是一個條件測試命令,command是一個或多個命令的列表。
  6. 1.執行condition
  7. 2.如果condition的退出狀態為非0,則退出迴圈
  8. 3.如果condition的退出狀態為0,則執行command
  9. 4.當command結束時,回到第一步

如以下案例:

  1. [[email protected] ~]# cat4.sh
  2. #!/bin/bash
  3. i=0
  4. while [ $i -lt 10 ]
  5. do echo$i
  6. i=`expr$i + 1`
  7. done
  1. [[email protected] ~]# sh -x4.sh
  2. + i=0
  3. + '[' 0 -lt 10 ']'
  4. + echo 0
  5. 0
  6. ++ expr 0 + 1
  7. + i=1
  8. + '[' 1 -lt 10 ']'
  9. + echo 1
  10. 1
  11. ++ 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就是一個 重要的除錯命令了!