13、多分支+循环+循环嵌套

多分支     case 变量名/表达式 in value1|value2)     commands1     ;; value3)     commands2     ;;      value4)     command3     ;; [*)     defaults commands     ;;]     esac         作用:计算变量名/表达式的值,然后与下面的 value 支匹配,与哪个匹配到(相等),就        执行其下的commands ,如果所有的都没匹配到,        有*就执行defaults commands 段           例:写一个菜单程序,给几个选项       1) 显示当前用户       2) 显示内存信息  3) 显示磁盘信息        if 多分支      if [ condition1 ] then     commands1 elif [ condition2 ] then     commands2 elif [ condition3 ] then     commands3 elif [ condition4 ] then     commands4 else     commands fi     练习:把象限的程序用if 多分支实现     for 遍历循环     格式: for 变量名 in value1 value2 value3 ... valueN do commands done        如果遍历值很多可以 for 变量名 in $(seq 起始值 步长 终值) do commands done         作用:变量在 value1 到 valueN 之间遍历,每次取一个值,每取一个值执行一次循环体       值取完循环也就结束了       例:用for 求 1+2+3+...+50   例:用for 遍历求 /etc/下有多少目录     for i in /etc/* do done     C式for 循环 格式: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   例:写个程序,打印   * ** *** **** *****   *****         **** *** ** *     作业:     写个程序,打印       *          **   ***  **** *****   *****      ****   ***    **     *         *    ***   *****  ******* *********                  
上一篇:[Linux Shell学习系列六]Shell的条件执行——3case语句


下一篇:Warning: Multiple build commands for output file /xxx