美文网首页
Shell入门04 -- 条件分支

Shell入门04 -- 条件分支

作者: YanZi_33 | 来源:发表于2021-10-09 17:43 被阅读0次

条件测试

格式一:test 条件表达式
格式二:[ 条件表达式 ]
格式三:[[ 条件表达式 ]]

test -d /backup
  • test 是指令;
  • test -d /backup:判断是否存在/backup目录;
test -d /backup ;  mkdir -p /backup
test -d /backup || mkdir -p /backup
test -d /backup && mkdir -p /backup
  • 命令1 ;命令2:命令1无论是否执行成功,都会执行命令2;
  • 命令1 || 命令2:命令1执行成功,才会执行命令2;
  • 命令1 && 命令2:命令1执行失败,才会执行命令2;

数值比较

  • [ 1 -gt 10 ]:大于
  • [ 1 -lt 10 ]:小于
  • [ 1 -eq 10 ]:等于
  • [ 1 -ne 10 ]:不等于
  • [ 1 -ge 10 ]:大于等于
  • [ 1 -le 10 ]:小于等于
案例一:查看磁盘的使用状态,当磁盘使用率>=80%时,将磁盘使用率写入目标文件中
  • 创建脚本文件dish_use.sh,内容如下:
#!/bin/bash
  
Disk_free=$(df -h|grep "/$"|awk '{print $(NF-1)}'|awk -F '%' '{print $1}')

if [ $Disk_free -ge 0 ]; then
  echo "Dish is Use: ${Disk_free}%" > /tmp/disk_use.txt

fi
  • $()将命令括起来;
  • df -h:查看磁盘的主要命令,如下所示:
    image.png
  • df -h|grep "/$"|awk '{print $(NF-1)}'|awk -F '%' '{print $1}':取出根目录/,然后取出使用率,去除百分号,并打印出来;
  • echo "Dish is Use: ${Disk_free}%" > /tmp/disk_use.txt:写入文件
  • sh -x dish_use.sh:可查看脚本的执行过程;
案例二:打印当前CPU的负载情况 1分钟,5分钟,15分钟
  • 创建脚本文件cpu.sh,内容如下:
#!/bin/bash

Load_01=$(w|awk 'NR==1'|awk -F ':' '{print $4}'|awk -F ' ' '{print $1}')
Load_02=$(w|awk 'NR==1'|awk -F ':' '{print $4}'|awk -F ' ' '{print $2}')
Load_03=$(w|awk 'NR==1'|awk -F ':' '{print $4}'|awk -F ' ' '{print $3}')

echo "当前系统1分钟的负载是:$Load_01"
echo "当前系统5分钟的负载是:$Load_02"
echo "当前系统15分钟的负载是:$Load_03"
  • w:是查看CPU负载的命令;
    image.png
  • w|awk 'NR==1'|awk -F ':' '{print $4}'|awk -F ' ' '{print $1}':取出第一行,然后以:为分隔符,取出第四元素,然后以空格为分隔符,取出对应的数据;
  • 执行脚本 sh cpu.sh,结果如下:
    image.png

流程控制

  • 单分支结构:
if [ 条件语句 ];then

fi
  • 双分支结构:
if [ 条件语句 ];then
       语句一
  else
       语句二
fi
  • 多分支结构:
if [ 条件语句 ];then
      语句一
elif [ 条件语句 ];then
      语句二
elif [ 条件语句 ];then
      语句三
else
      语句四
fi
案例:安装Apache

case语句

case 变量 in
   模式1)
     命令一
     ;;
   模式2)
     命令二
     ;;
   模式3)
     命令三
     ;;
   模式其他*)
     命令四
     exit 1
 esac
  • 创建脚本文件php.sh,内容如下:
#!/bin/bash

echo "#####################"
echo "-----1.install php5.5#####"
echo "-----2.install php5.6#####"
echo "-----3.install php7.0#####"
echo "#####################"

read -p "请输入你要安装的版本数字编号:" num

while true
do
 case $num in
   1)
     echo "php5.5 is done..."
     break
     ;;
   2)
     echo "php5.6 is done..."
     break
     ;;
   3)
     echo "php7.0 is done..."
     break
     ;;
   *)
     read -p "请输入你要安装的版本数字编号:" num
 esac
done
  • while循环保证,在执行其他模式*下不会退出,执行过程如下:
    image.png
案例:编写系统工具箱集合
  • 创建脚本文件system.sh,内容如下:
#!/bin/bash

cat <<-EOF
==============================
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
u 查看系统负载
q 退出程序
==============================
EOF

while true
do
 read -p "请输入你想查看的系统状态对应码[d/m/u/q]: " sys
 case $sys in
   h)
     help
     ;;
   f)
     diskutil list
     ;;
   d)
     df -h
     ;;
   u)
     uptime
     ;;
   q)
     break
     ;;
   *)
    echo "error"
    exit 1

 esac
done
  • 执行过程如下:


    image.png

相关文章

  • Shell入门04 -- 条件分支

    条件测试 格式一:test 条件表达式格式二:[ 条件表达式 ]格式三:[[ 条件表达式 ]] test 是指令;...

  • shell 条件分支语句

    shell 条件分支语句 bash支持过程式的脚本编写。脚本的基本执行控制结构包括:(1) 按顺序执行(2) 选择...

  • Linux shell流程控制

    单分支的if语句 例子 1、使用单分支的if条件语句来判断/home/huanyu/shell/zz文件是否存在,...

  • 2018-12-21

    shell中if用法详解 if使用详解 格式 1.单分支语句结构 2.双分支语句结构 3.多分支语句结构 条件表达...

  • Shell Script(四):条件分支语句 1

    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。 这篇文章中主要讲解三个命令:if、te...

  • Shell Script(六):条件分支语句 2

    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。 这篇文章讲述一下 case 条件分支语...

  • Python快速入门(4):条件分支

    打印结果: 传统方式中,判断List中是否存在某个元素,需要用下面的方式: 在python中,in可以作为逻辑判断...

  • Python之条件判断

    Python 判断 + 循环 单条件 双条件 多条件 小案例 单分支 双分支 多分支

  • shell流程控制-case条件判断语句

    case多条件分支语句case介绍case语法shell特殊变量一、case介绍在生产环境中,我们总会遇到一个问题...

  • Shell 概述

    学习 Shell 主要包括的内容: Shell 脚本入门 Shell 变量 Shell 内置命令 Shell 运算...

网友评论

      本文标题:Shell入门04 -- 条件分支

      本文链接:https://www.haomeiwen.com/subject/kgotoltx.html