while 的迴圈

while 迴圈格式:

while 命令判斷
do
    命令1
    命令2
    .....
done

當命令判斷為真時,則執行迴圈。

例:

n=1
while [ "$n" -lt 10 ]
do
    echo "$n"
    n=$(( $n + 1 )) 
done


有時候我們希望迴圈遇到某一種情況時,就中斷執行,此時要用 break

例:

n=1
while [ "$n" -lt 10 ]
do
    echo "$n"
    n=$(( $n + 1 )) 

    if [ $n -eq 5 ]; then
       break
    fi
done

有時候我們希望迴圈遇到某一種情況時跳過去不處理,其餘繼續做,此時要用 continue

例:

n=1
while [ "$n" -lt 10 ]
do

    if [ $n -eq 5 ]; then
       n=$(( $n + 1 ))
       continue
    fi

    echo "$n"
    n=$(( $n + 1 ))

done

================

例:

#! /bin/sh

# 數學階乘的計算

if [ $# -ne 1 ]; then
    echo "Usage: $0 正整數"
    exit
fi
echo 
echo -n $1"! = "

m=1
r=1
echo -n " 1 *"
while [ $m -lt $1 ]; do

    m=$[ m + 1 ]
    r=$(( $m * $r ))

    if [ $m -eq $1 ]; then
	echo -n " $m "
    else
	echo -n " $m *"
    fi
done

echo -n "= $r"
echo

==================

執行: ./Factor.sh 5
結果: 5! =  1 * 2 * 3 * 4 * 5 = 120