1.单分支结构
#!/bin/bash
which ls
if [ $? = 0 ];then
echo ok
fi
2.双分支结构
#!/bin/bash
if grep -qs "CentOS" /etc/os-release;then
echo "OS is centos"
else
echo "OS not centos"
fi
双分支套双分支
#!/bin/bash
if [ $EUID -eq 0 ];then
if [ -f /var/log/message ];then
tail -n 100 /var/log/message >/var/log/message_bak
cat /var/log/message_bak>/var/log/message
echo "is ok" && exit
else
echo '/var/log/message not exiting'
fi
else
echo "USER IS NOT root"
exit
fi
3.多分支结构
if [ 有房 ];then
嫁
elif [ 有车 ];then
嫁
elif [ 有钱 ];then
嫁
else
不嫁
fi
#!/bin/bash
read -p "请输入你有多少钱: " money
read -p "请输入你有几套房子: " houses
if [ $money -ge 1000000 ] ### ge 表示大于
then
echo "有钱我嫁给你"
elif [ $houses -ge 3 ]
then
echo "有房我嫁给你"
else
echo "我考虑下"
fi
4.if语句中的文件比对
参数 | 说明 | 示例 |
---|---|---|
-e | 如果条件或目录存在则为真 | -e file |
-s | 如果文件存在且至少有一个字符则为真 | -s file |
-d | 如果文件存在且为目录则为真 | -d file |
-f | 如果文件存在且为普通文件则为真 | -f file |
-r | 如果文件存在可读则为真 | -r file |
-w | 如果文件存在可写则为真 | -w file |
-x | 如果文件存在可执行则为真 | -x file |
1)-e file/dir |
#!/bin/bash
if [ -e "$1" ];then
echo "file is exiting"
else
echo "file is not exiting"
fi
也可以写成
[root@famous-machine-1 ~]# [ -e /etc/hosts ]&& echo 'file exiting '||echo 'file no exiting'
file exiting
[root@famous-machine-1 ~]# [ -e /etc/hosts11 ]&& echo 'file exiting '||echo 'file no exiting'
file no exiting
5.if整数比对
-eq | 等于则条件为真 | 1 -eq 1 |
-ne | 不等于则条件为真 | 1 -ne 2 |
-gt | 大于则条件为真 | 2 -gt 1 |
-ge | 大于或等于则条件为真 | 2 -ge 2 |
-lt | 小于则条件为真 | 1 -lt 2 |
-le | 小于等于则条件为真 | 1 -le 1 |
< | 小于(需要双括号) | 如:((“ a " < " a" < " a"<"b”)) |
<= | 小于等于(需要双括号) | 如:((“ a " < = " a" <= " a"<="b”)) |
1)查找服务是否运行的脚本 |
#!/bin/bash
if [ $# -ne 1 ];then
echo "请输入一个参数!" && exit
fi
systemctl status $1 >>/dev/null
if [ $? -eq 0 ];then
echo "$1 server is running!"
else
echo "$1 server no running!"
fi
2)磁盘使用率超过80%报警
cat test.sh
#!/bin/bash
Disk_Use=$(df -h|grep /$ |awk '{print $5}')
if [ ${Disk_Use//%} -gt 80 ];then
echo "disk_use is gt 80%"
else
echo ' disk is ok '
fi
5.if字符串比较
参数 | 说明 | 示例 |
---|---|---|
= | 等于则条件为真 | [ "$a" == "$a"] |
!= | 不等于则条件为真 | [ "$a" != "$b"] |
-z | 字符串的长度为零则为真 | [ -z $a ] |
-n | 字符串的长度不为空则为真 | [ -n "$a" ] |
str1>str2 | str1大于str2为真 | str1 > str2 |
str1<str2 | str1小于str2为真 | str1 < str2 |
6.多条件比对
-a and
[root@famous-machine-1 ~]# [ 1 -eq 1 -a 1 -ne 2 ]&& echo $? #两个条件都必须满足
0
root@rongbiz-Super-Server:~# cat test.sh
#!/bin/bash
read -p "请输入考试成绩: " cj
if [ $cj -ge 0 -a $cj -lt 60 ];then
echo "补考!"
elif [ $cj -ge 60 -a $cj -lt 80 ];then
echo "合格!"
elif [ $cj -ge 80 -a $cj -le 100 ];then
echo "优秀"
else
echo "请输入合规数字!"
fi
-o or
[root@famous-machine-1 ~]# [ 1 -eq 1 -o 2 -ne 2 ]&& echo $? #两个条件满足一个就行
0
6.if正则比对
必须 [[]]
#!/bin/bash
read -p "请输入考试成绩: " cj
if [[ ${cj} =~ ^[0-9]+$ ]];then
echo "$cj"
else
echo "input error"
fi
1)添加一个用户 名称开通必须是英文字符串 后缀必须是数字 例如:yangtao416
#!/bin/bash
read -p "请输入一个前缀: " cj
if [[ ! $cj =~ ^[a-Z]+$ ]];then
echo "输入错误!" && exit
fi
read -p "请输入一个数字后缀: " num
if [[ $num =~ ^[0-9]+$ ]];then
id ${cj}${num}
if [ $? -ne 0 ];then
useradd ${cj}${num}
echo "create user ${cj}${num} OK"
else
echo " ${cj}${num} is exiting"
exit
fi
fi