shell流程控制(条件判断单分支)九

流程控制之条件判断

条件判断语句在所有语句中都存在,是一种最简单的流程控制语句。该语句使得程序根据不同条件来执行不同的程序分支,极大地方便了shell在程序判断中的使用。

1.if条件语句的语法

if条件语句分为多种结构,有单分支结构,双分支结构,多分支结构

(1)单分支结构语法

语法一:
if   <条件表达式>
then
       指令
fi
语法二:
if  <条件表达式>;then
    指令
fi

(2)双分支结构语法

if <条件表达式>
then
       指令序列1
else
       指令序列2
fi

(3)多分支结构

if  条件表达式1
then
       指令序列1
 elif  条件表达式2
 then
        指令序列2
 else
        指令序列n
  fi

2.if条件语句案例:
示例1.通过ping命令测试主机是否能上网?

[root@localhost ~]# vim test1.sh
#! /bin/bash
  
if ping -c 2 -W 0.1  -i  0.1   www.baidu.com &>/dev/null
then
        echo "net is pong!"
fi
给脚本添加执行权限,并执行
[root@localhost ~]# chmod +x test1.sh
[root@localhost ~]# ./test1.sh 
结果:
net is pong!

示例2:判断当前已登录的用户数,当超过五个时输出“Too many”。
分析:
(1)首先,要知道如何查看当前登录用户 ----使用命令:who
(2)其次,查看已登录的用户数

#! /bin/bash

#查看当前已经登录用户数量,并赋值给变量
num=$(who | cut -d'' -f1 | sort -u | wc -l)
if [ $num -gt 5 ]
then    
        echo "Too many"
fi  

3判断当前系统的语言环境,若不是“en_US”时输出提示信息“Not en_US”。
分析:
1)如何获取当前系统语言环境–> LANG

lang=$LANG
			# echo $lang
			zh_CN.utf8
			文件:/etc/locale.conf
	  2)处理字符串
	  方法1:echo $lang | cut -d. -f1
	  方法2:echo $lang | awk -F. '{print $1}'

#! /bin/bash
  
lang=$(echo $LANG | cut -d. -f1)
if [ "$lang" != "en_US" ] 
then    
        echo "Not en.US"
fi
添加执行权限,并执行
[root@localhost ~]# chmod +x test3.sh
[root@localhost ~]# ./test3.sh
Not en.US

4.判断当前系统剩余内存大小,如果低于100M,邮件报警管理员邮箱,使用计划任务,每10分钟检查一次
分析:
(1)核心为如何取出当前剩余内存大小

free -m | grep "Mem:" | tr -s " " | cut -d" " -f4

(2)计划任务的配置

*/10 * * * * sh /test4.sh &>/dev/null
#! /bin/bash

free_mem=$(free -m | grep "Mem:" | tr -s " " | cut -d" " -f4 )
if [ $free_mem -lt 100 ]
then    
        echo "内存剩余$free_meme,内存低于100M" | mail -s "内存警告" xxx.@163.com
fi 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值