丈夫欲遂平生志,一载寒窗一举汤。这篇文章主要讲述Shell编程及自动化运维流程控制:if相关的知识,希望能为你提供帮助。
单分支结构语法
if [ command/test ]; then
符合该条件执行的语句
fi
示例
由用户输入用户名,如果用户不存在,则创建该用户
#!/bin/bash
read -p "Input username: " name
id $name & > /dev/null
if [ $? -ne 0 ]; then
useradd $name
fi
双分支结构语法
if 条件测试
then
命令序列
else
命令序列
fi
示例
用户输入用户名, 如果用户不存在,则创建该用户,并设置密码为123456;否则,提示用户已经存在
#!/bin/bash
read -p "Input username: " name
#id $name& > /dev/null
#if [ $? -eq 0 ]; then
if id $name & > /dev/null; then
echo "$name already exist"
else
useradd $name
echo "123456" | passwd --stdin $name & > /dev/null
echo "$name create finished,the password is 123456"
fi
多分支结构语法
多分支结构
if 条件测试1
then 命令序列
elif 条件测试2
then 命令序列
elif 条件测试3
then 命令序列...
else 命令序列
fi
示例
取出系统时间的小时,对数字进行判断
- 6--10 this is morning
- 11-13 this is noon
- 14-18 this is afternoon
- 其他 this is night
#!/bin/bash
hour=`date +%H`
if [ $hour -ge 6 -a $hour -le 10 ]; then
echo "This is morning"
elif [ $hour -ge 11 -a $hour -le 13 ]; then
echo "This is noon"
elif [ $hour -ge 14 -a $hour -le 18 ]; then
echo "This is afternoon"
else
echo "This is night"
fi
嵌套结构语法
if 条件测试1then 命令序列
if 条件测试1then 命令序列
else 命令序列
fi
else 命令序列
fi
示例
read -p "Input username: " name
id $name & > /dev/null
if [$? -eq 0]; then
echo "$name 存在"
else
useradd $name
echo "$name create finished"
read -p "请输入用户密码: "pass
if [ $#pass-ge7]; then
echo "$pass" | passwd --stdin $name
echo "$name 用户密码是 $pass"
else
echo "密码不合格"
fi
fi
调试脚本
- sh -n 02.sh 仅调试脚本中的语法错误。
- sh -vx 02.sh 以调试的方式执行,查询整个执行过程
练习
#!/usr/bin/bash
DUG=`df -hT |grep /$|awk print $6|sed s/%//`
CUG=`mpstat|grep all|awk print $11|awk -F. print $1`
used=`free|grep Mem|awk print $3`
total=`free|grep Mem|awk print $2`
MUG=$(expr $used / $total)
d=`expr 100 - $CUG`
if [ $DUG -ge 90 ]; then
echo "当前磁盘占用超过80%"
fi
if [ $d -ge 80 ]; then
echo "当前CPU使用率以达到80%"
fi
if [ $MUG -ge 90 ]; then
echo "当前内存占用率已达到90%"
fi
【Shell编程及自动化运维流程控制(if)】
推荐阅读
- electron学习笔记如何在electron集成截屏功能()
- 基于Spark+Grafana可视化电商项目实战,好文收藏~
- Hive跨集群和版本迁移
- 小案例--python编写设置拼手气红包模块
- 要想用活Redis,Lua脚本是绕不过去的坎 !
- 万字干货(IM 会话列表卡顿优化实践)
- Kubernetes 持久化数据存储 StorageClass
- try_files $uri $uri/ @router
- ansbile