32 流程控制

来源:互联网 发布:java 调用打印机 编辑:程序博客网 时间:2024/06/04 20:10

1、单分支条件语句

      if  [ 判断语句 ];then

  程序

      fi

或者

if  [条件判断]

    then

程序

fi

例子1:如果根分区超过80%,发警告:

 #!/bin/bash

rate=$(df -h | grep "/dev/sda5" | awk '{print $5}' | cut -d % -f 1)
if [ $rate -gt 80 ];then
       echo 'waring'
fi

例子2:备份mysql

  #!/bin/bash
  
   #同步网上亚洲服务器时间
   ntpdate asia.pool.ntp.org &> /dev/null
   #格式化时间,年月日,不显示时分秒
  date=$(date +%y%m%d)
   #统计mysql数据库大小,并把大小赋予size变量,假设备份rpm包的mysl,实际一般都是源码包不用rpm包
  size=$(du -sh /var/lib/mysql)
  
  if [ -d /tmp/dbbak ]
      then
          echo "Date : $date" > /tmp/dbbak/dbinfo.txt
          echo "Data size : $size " >> /tmp/dbbak/dbinfo.txt
          cd /tmp/dbbak
          tar -zcf mysql-lib-$date.tar.gz  /var/lib/mysql  dbinfo.txt  &> /dev/null
          rm -rf /tmp/dbbak/dbinfo.txt
      else
          mkdir  /tmp/dbbak
          echo "Date: $date" > /tmp/dbbak/dbinfo.txt
          echo "Data size : $size " >> /tmp/dbbak/dbinfo.txt
          cd /tmp/dbbak
          tar -zcf mysql-lib-$date.tar.gz  /var/lib/mysql  dbinfo.txt  &> /dev/null
          rm -rf /tmp/dbbak/dbinfo.txt



2、多分支条件语句

if   [ 判断语句 ]

then

程序

elif  [ 判断语句 ]

then

程序

.....

else

程序

fi



3、switch....case

例子:

   #!/bin/bash
   read -p 'plase input:' -t 30 cho
   case "$cho" in
           "yes")
                   echo "yes"
                   ;;
           'no')
                   echo 'no'
                   ;;
          *)
                  echo 'default'
                  ;;
  esac

【注】:每一个程序块(echo 这段后面的“ ;; ”一定不要忘记)



4、for循环

4.1 for方法一

for  变量   in  值1,值2,值3......

do

程序

done

例子1:

   #!/bin/bash
  for i in 1,2,3,4
      do
          echo $i
    done
//1,2,3,4

例子2:

  cd /root/sh

  ls *.sh >ls.log

  arr=$(cat  ls.log)
  for i in $arr
       do
           echo $i
       done


4.2 for方法二

for((初始值;循环条件;变量变化))

do

程序

done

例子1:

   #!/bin/bash
  n=0;
  for((i=1;i<=100;i++))
          do
             n=$(($n+$i))
          done
  echo $n 
              //5050


例子2:待完成,自己写一个批量添加指定数量的用户、密码



5、while与until循环

5.1 :条件判断成立一支循环

while  [  条件判断 ]

do

程序

done

例子1:

   #!/bin/bash
  n=0;
  i=1;
  while [ $i -le 100 ]
          do
                  n=$(( $n + $i ))
                  i=$(( $i + 1 ))
          done
   
  echo $n
//5050


5.2 until条件不成立一直循环,与while相反

until [  条件判断 ]

do

程序

done

例子1:

   #!/bin/bash
  n=0;
  i=1;
  until [ $i -
gt 100 ]
          do
                  n=$(( $n + $i ))
                  i=$(( $i + 1 ))
          done
   
  echo $n
//5050









原创粉丝点击