bashサイクル制御文のcontinue、break


ループ制御:
continue:今回のサイクルを早期に終了し、次のラウンドの評価を開始します.break[n]:現在のループから飛び出し、多層がデフォルトで指定されていない場合は1つのレイヤから飛び出します(nは、複数のforループを飛び出す必要がある場合など、いくつかのレイヤから飛び出すループを指定できます).
練習:
1、100以内の整数の和を求める.
#!/bin/bash
#
declare -i sum=0
declare -i i=1
#
while true;do
        if [ $i -gt 100 ];then
                break    \\  while 
        else
                let sum=$sum+$i
                let i++
        fi
done
        echo $sum

2、100以内のすべての偶数の和を求める;
#!/bin/bash
#
declare -i sum=0
declare -i i=1
#
while [ $i -le 100 ];do
           if [ $[$i%2] -eq 1 ];then
                let i++
                continue   \\  , 。
           fi
                let sum+=$i
                let i++
done
        echo $sum

3、ユーザーにユーザー名の入力を要求し、ユーザーのID番号を表示する.ユーザー入力quitが終了するまで;
#!/bin/bash
#
while true;do
read -p "please enter user: " userName
        if [ "$userName" == quit ];then
                exit 7
        fi
        if [ -z "$userName" ] || ! id $userName >& /dev/null ;then
                echo "you enter user not exist or null."
                continue
        fi
                echo "$userName ID Number Is:`id -u $userName`"

done

4、
(a)、ユーザーにディスクデバイスのデバイスファイルを入力するように要求し、デバイスファイルが存在しない場合は、ユーザーが正しく入力するまで、ユーザーに再入力するように要求する.(b)、ユーザーはquit終了を入力することができる.
#!/bin/bash
#
while true;do
 read -p "please enter block device: " Device
        if [[ "$Device" == quit ]];then
                exit 8
        fi
        [ -b "$Device" ] && break || echo "error enter !!!"
done
echo "you enter block device is: $Device."

前の問題を拡張して、ユーザーが正しいブロックデバイスを与えた後:1、ユーザーがブロックデバイスを入力することを表示して、そしてユーザーに提示して、後続の操作は設備の上のすべてのファイルを破壊して、ユーザーに2を継続するかどうかを選択させて、もしユーザーがyを入力するならば、後続の操作を継続します;3、ユーザーがnを入力すると、ユーザーが中止を選択し、スクリプトを終了したことが表示されます.4、その他の文字を入力すると、ユーザーに再選択させる.
5、ユーザーがyを選択した場合、指定されたブロックデバイス上のすべてのパーティションを消去する.
#!/bin/bash
#
while true;do
 read -p "please enter block device: " Device
        if [[ "$Device" == quit ]];then
                exit 8
        fi
        [ -b "$Device" ] && break || echo "error enter !!!"
done
echo "you enter block device is: $Device."

while true;do
 read -p "enter Y|y contiue or N|n exit." option
        option=`echo $option | tr 'A-Z' 'a-z'`
 if [[ "$option" == y ]];then
        break

 elif [[ "$option" == n ]];then
        exit 7
 else
         echo "Wrong input..."
 fi
done
dd if=/dev/zero of=$Device bs=512 count=1

練習:スクリプトを書く前提:yumソース1を構成し、ネイティブに使用可能なyumソースがない場合は、ユーザーにプロンプトを表示し、スクリプトを終了します(4).このスクリプトがrootユーザーで実行されない場合、rootのみがパッケージをインストールする権限を持っていることを示し、終了します(3).2、ユーザーにパッケージ名を入力するように要求し、yumを使用して自動的にインストールする.yumコマンド実行中の情報をできるだけ出力しない.インストールに成功した場合は緑で表示され、そうでない場合は赤で表示に失敗します.3、ユーザーが入力したパッケージが存在しない場合、エラーが表示された後、ユーザーに入力を継続させる.4、ユーザーがquitを入力すると、正常に終了する(0);5、正常に終了する前に、ローカルにインストールされたパッケージの数を表示する.