shell流程控制 (条件判断双分支案例)十

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 
请输入一个数字:         
请输入数字
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值