13、多分岐ループ+ +ループネスト

多分岐
    ケース変数名/表現で
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
 
例:写个程序,打印
 
*
**
***
****
*****
 
*****        
****
***
**
*
 
 
作业:
    写个程序,打印
 
    *      
   **
  ***
 ****
*****
 
*****    
 ****
  ***
   **
    *
 
 
    *
   ***
  *****
 *******
*********
 
 
 
 
 
 
 
 
 

おすすめ

転載: www.cnblogs.com/steven9898/p/11331208.html