1.双分支结构
案例
1.1判断数字大于500则执行big.sh,小于等于500则退出脚本,并输出报错信息。
#! /bin/bash
read -p "请输入一个数字:"num
if [ $num -gt 500 ]
then
sh big.sh
else
echo "$num小于等于500"
exit 3
fi
添加执行权限,并执行
[root@localhost ~]# vim ceshi1.sh
[root@localhost ~]# chmod +x ceshi1.sh
[root@localhost ~]# ./ceshi1.sh
输出结果
[root@localhost ~]# ./ceshi1.sh
请输入一个数字:500
500小于等于500
[root@localhost ~]# ./ceshi1.sh
请输入一个数字:1000
数值超过500
1.2判断一个用户是否存在如果存在,则显示该用户已存在,如果不存在则创建。
#! /bin/bash
if id chen 2&>/dev/null
then
echo "该用户已存在"
else
useradd chen
fi
[root@localhost ~]# vim ceshi2.sh
[root@localhost ~]# chmod +x ceshi2.sh
[root@localhost ~]# ./ceshi2.sh
[root@localhost ~]# ./ceshi2.sh
useradd:用户“chen”已存在
1.3如果用户chen存在连同家目录一起删除,否则显示用户不存在
#! /bin/bash
if id chen &>/dev/null
then
echo "该用户已存在"
userdel -r chen
echo "用户及其家目录已删除"
else
echo "此用户不存在"
fi
[root@localhost ~]# vim ceshi3.sh
[root@localhost ~]# ./ceshi2.sh
该用户已存在
用户及其家目录已删除
[root@localhost ~]# ./ceshi2.sh
此用户不存在
1.4判断某个软件包是否安装,如安装返回“此软件包已安装”,若没有安装则安装
#! /bin/bash
read -p "请输入软件包包名" packagesname
if rpm -q $packagesname &>/dev/null
then
echo "此软件包已安装"
else
yum install -y $packagesname &>/dev/null
fi
[root@localhost ~]# vim ceshi4.sh
[root@localhost ~]# chmod +x ceshi4.sh
[root@localhost ~]# ./ceshi4.sh
请输入软件包包名httpd
[root@localhost ~]# rpm -q httpd
httpd-2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_64
[root@localhost ~]# ./ceshi4.sh
请输入软件包包名chrony
此软件包已安装
1.5检查主机是否存活,并输出结果
#! /bin/bash
read -p "请输入主机IP" ip
ping -c -2 -w 1 $ip &>/dev/null
num=$(echo $?)
if [ $num -eq 0 ]
then
echo "此主机ping的通"
else
echo "此主机不通"
fi
结果:
[root@localhost ~]# vim chen2.sh
[root@localhost ~]# ./chen2.sh
请输入主机IP192.168.150.136
此主机不通
[root@localhost ~]# ./chen2.sh
请输入主机IP127.0.0.1
此主机ping的通
2.if嵌套
案例一
2.1判断数字大于500则执行big.sh,小于等于500则退出脚本,并输出报错信息。
上面案例1.1,会存在一些问题:
(1)当我们键入的变量不是数字时,会有以下问题
[root@localhost ~]# ./ceshi1.sh
请输入一个数字:ftyvhg
./ceshi1.sh: 第 4 行:[: ftyvhg: 需要整数表达式
ftyvhg小于等于500
解决方案:
#! /bin/bash
read -p "请输入一个数字:" num
if let num++ #通过变量的数学运算来判断输入的便变量是否是数字
#if expr n + 1 2&>/dev/null
then
if [ $num -gt 500 ]
then
sh big.sh
else
echo "$num小于等于500"
exit 3 #自定义的返回错误码
fi
else
echo "请输入数字"
exit 5 #自定义的返回错误码
fi
结果:
[root@localhost ~]# vim ceshi1.sh
[root@localhost ~]# ./ceshi1.sh
请输入一个数字:aa
请输入数字
[root@localhost ~]# ./ceshi1.sh
请输入一个数字:50
51小于等于500
[root@localhost ~]# ./ceshi1.sh
请输入一个数字:555
数值超过500
[root@localhost ~]# ./ceshi1.sh
请输入一个数字:
请输入数字