多分岐
ケース変数名/表現で
VALUE1 |値2)
commands1
;;
VALUE3)
commands2
;;
VALUE4)
COMMAND3
;;
[*)
デフォルトのコマンド
;;]
ESAC
処置:変数名計算する(等しい)に適合される式は、次の値マッチングブランチの/値を、それを
その実現の下でのコマンドは、すべての場合は、一致しませんでした
あり、デフォルトの実装では、セグメントコマンドに*
例:プログラムメニューを書いて、いくつかのオプションを与えます
1)現在のユーザー
2)メモリ情報
3)表示ディスク情報
もしマルチブランチ
もし[条件1]
それから
commands1
elifの[条件2]
それから
commands2
elif [condition3]
それから
commands3
elif [condition4]
それから
commands4
他
コマンド
されます
演習:象限手順多分岐が達成場合
トラバーサルサイクルの
フォーマット:
用变量名中をvalue1 value2の値3 ...値N
行う
コマンド
完了
多くの値がトラバースできる場合
$変数名用(配列は値ステップ最終値を開始します)
行う
コマンド
完了
処置:変数横断する値1値Nとの間の値をとるそれぞれ、ループ部材を介して時間をとっ各値
完全なサイクルを取る価値は終わりました
例:と1 + 2 + 3 + ... + 50を求めるための
使用:例のディレクトリトラバーサルの要求の/ etc /の下の番号
で私の/ etc / *
行う
完了
ループのためのCスタイル
格式:for ((i=0;i<=100;i++))
do
commands
done
while 循环
格式: while [ condition ]
do
commands
done
例:n=1
while [ $n -le 5 ]
do
echo -n "*"
n=$[$n+1]
done
打印 *****
例:打印 1-10 内的偶数
n=2
while [ $n -le 10 ]
do
echo $n
n=$[$n+2]
done
n=1
while [ $n -le 10 ]
do
if [ $n%2 -eq 0 ]
then
echo $n
fi
n=$[$n+1]
done
例:求 20 内能同时被2和3整除的数之和
s=0
n=1
while [ $n -le 20 ]
do
if [[ $n%3 -eq 0 && $n%2 -eq 0 ]]
then
s=$[$s+$n]
fi
let n+=1
done
echo "s=$s"
until 循环
格式:
until [ condition ]
do
commands;
done
作用:condition 是否成立,不成立,执行循环体,成立里終止。
例:打印 1-10 内的偶数
n=1
until [ $n -gt 10 ]
例:通过循环创建三个用户,用户名从键盘输入,密码与用户名相同
改密: echo $user | passwd $user --stdin
死循环
一般来讲死循环是要避免的,但在有些情况下,可能会刻意使用死循环,
构建死循环:
while true
do
[
if [ condition ]
then
break --在必要的时候给程序留个出口
fi
]
[sleep 3] --在有些情况下,要給程序停止时间
done
例:写个程序监控vsftpd 是否正常运行,如果服务器停止了的话,启起来
while true
do
if ! ....
then
service vsftpd start
fi
sleep 3
done
例:写个程序,由用户输入用户名,直到输入的用户不存在,才退出
循环嵌套
while
do
while
do
done
done
例:写个程序,打印
*
**
***
****
*****
*****
****
***
**
*
作业:
写个程序,打印
*
**
***
****
*****
*****
****
***
**
*
*
***
*****
*******
*********