bashサイクル制御文のcontinue、break
ループ制御:
continue:今回のサイクルを早期に終了し、次のラウンドの評価を開始します.break[n]:現在のループから飛び出し、多層がデフォルトで指定されていない場合は1つのレイヤから飛び出します(nは、複数のforループを飛び出す必要がある場合など、いくつかのレイヤから飛び出すループを指定できます).
練習:
1、100以内の整数の和を求める.
2、100以内のすべての偶数の和を求める;
3、ユーザーにユーザー名の入力を要求し、ユーザーのID番号を表示する.ユーザー入力quitが終了するまで;
4、
(a)、ユーザーにディスクデバイスのデバイスファイルを入力するように要求し、デバイスファイルが存在しない場合は、ユーザーが正しく入力するまで、ユーザーに再入力するように要求する.(b)、ユーザーはquit終了を入力することができる.
前の問題を拡張して、ユーザーが正しいブロックデバイスを与えた後:1、ユーザーがブロックデバイスを入力することを表示して、そしてユーザーに提示して、後続の操作は設備の上のすべてのファイルを破壊して、ユーザーに2を継続するかどうかを選択させて、もしユーザーがyを入力するならば、後続の操作を継続します;3、ユーザーがnを入力すると、ユーザーが中止を選択し、スクリプトを終了したことが表示されます.4、その他の文字を入力すると、ユーザーに再選択させる.
5、ユーザーがyを選択した場合、指定されたブロックデバイス上のすべてのパーティションを消去する.
練習:スクリプトを書く前提:yumソース1を構成し、ネイティブに使用可能なyumソースがない場合は、ユーザーにプロンプトを表示し、スクリプトを終了します(4).このスクリプトがrootユーザーで実行されない場合、rootのみがパッケージをインストールする権限を持っていることを示し、終了します(3).2、ユーザーにパッケージ名を入力するように要求し、yumを使用して自動的にインストールする.yumコマンド実行中の情報をできるだけ出力しない.インストールに成功した場合は緑で表示され、そうでない場合は赤で表示に失敗します.3、ユーザーが入力したパッケージが存在しない場合、エラーが表示された後、ユーザーに入力を継続させる.4、ユーザーがquitを入力すると、正常に終了する(0);5、正常に終了する前に、ローカルにインストールされたパッケージの数を表示する.
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、正常に終了する前に、ローカルにインストールされたパッケージの数を表示する.