流程控制语句

if条件判断



语法:  if [条件判断式]

          then
             程序
       
      fi


         
      if [条件判断式]

         then          
            程序
        
      else

         then
            程序
 
      fi    

查看根分区使用率

#!/bin/bash
a=$( dh -h | grep  /dev/sda3 | awk '{print $5}' | cut -d "%"  -f 1)
if [ "$a" -ge  80 ]

    then
           echo "内存超80%了"       
 
fi

#!/bin/bash

ntpdate asia.pool.ntp.org &> /dev/null
#同步系统时间

date=$(date +%y%m%d)
#把当前时间以一种格式赋予date

size=$(du -sh /var/lib/mysql)
#统计mysql数据库大小,并赋予size变量

if [ -d  /tmp/dbbak ]
#判断备份目录是否存在,是否是目录

   then   
      
      echo "Date :$date!" >/tmp/dbbak/dbinfo.txt
      #把当前日期写入临时文件中
      
      echo "Date size : $size " >>/tmp/dbbak/dbinfo.txt
      #把数据库大小写入临时文件中
      
      cd /tmp/bdbak
      #进入备份目录
      
      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 "Date size : $size " >>/tmp/dbbak/dbinfo.txt
      #把数据库大小写入临时文件中
      
      cd /tmp/bdbak
      #进入备份目录

      tar -zcf mysql-lib-$date.tar.gz  /var/lib/mysql  dbinfo.txt &? /dev/null
      
      rm -rf /tmp/dbbak/dbinfo.txt
      #删除临时文件




for循环

语法: for $变量  in   值1  值2  值3 ....  
   
          do   
              程序  #将值1,值2,值3依次赋予$变量
      
          done


       for (( 初始值; 控制条件;变量变化 ))

           do 
              程序
    
           done


#!/bin/bash
cd   /boot/sh/tar压缩包目录

ls  *.tar.gz >tar.log                  #将包文件名打印到tar.log
ls  *.tgz >> tar.log &>/dev/null       #将包tgz名称也加入tar.log,
a=$(cat tar.log|wc -l)                 #通过wc命令统计包个数赋予变量a

for ((i=1;i<=$a;i++))
  do    
     tarname=  cat tar.log|awk 'NR=="$1" {print  $1}'
     tar -zcf $tarname -C /root/sh/tar    
  done

rm -rf tar.log                         #删除tar.log临时文件

#!/bin/bash
cd   /boot/sh/tar压缩包目录

ls  *.tar.gz >tar.log                  
ls  *.tgz >> tar.log &>/dev/null

for in $(cat tar.log)
do 
   
          
     tar -zcf $tarname -C /root/sh/tar    
  done

rm -rf tar.log                         #删除tar.log临时文件

#!/bin/bash
read -p  "请输入要设置初始用户的名字"  name
read -p  "请输入要设置初始用户的密码"  pass
read -p  "请输入要建立多少个这样的用户" num

if [ -n  "$name"  -a   -n "$pass"   -n "$num" ]

  then 
      y=$(echo $num|sed 's/[0-9]//g') 

   if [  !-n $y ]

     then

        for((i=1;1<=$num;i++))
           do

              /usr/sbin/useradd $name$i &>/var/null
              echo $pass| /usr/bin/passwd --stdin $name$i &> /var/null

           done 
    fi
fi

for i in 1 2 3 4

  do  
  
    echo $I
  
  done




s=0
for (( i=0; i<=100; i++ ))
   do
   
        s=$((s+$i))

   done
   
echo $s



case判断

语法:case  $变量名   in
     
        "值1")
         
           程序1
           ;;
          
          
        "值2")
         
           程序2 
           ;; 
          
          
         *)     #代表若不是值1或值2,则执行程序3
        
           程序3
           ;;
        
esac

#!/bin/bash

read -p "请输入成绩:" score

case  "$score"  in
     
       100)
        echo "满分"
        ;; 
       
       
       9[0-9])
        echo "优秀"
        ;;
      
      
       [78][0-9])
        echo "良好"
        ;;
      
      
       6[0-9])
        echo"及格"
        ;; 


      *)
        echo "不及格"         
        ;;

esca  



while循环

语法:   while [条件判断式]
            do
                 程序 
            done
           



until循环

语法:  until [条件判断式]
            do
                 程序 
            done

注:until循环与while循环相反,until循环只要条件不成立则继续执行程序            

break语句,continue语句,exit语句

break 是跳出整个循环,在循环结束后下移至代码。

continue在循环中不执行continue下面的代码,转而进入下一轮循环

exit:脚本中碰到exit,脚本执行就结束了;命令中是退出当前shell

posted @ 2020-11-19 23:29  加油酱  阅读(56)  评论(0编辑  收藏  举报