条件语句(if、case)

本文介绍了Shell脚本中的条件判断结构,包括if语句的单分支、双分支和多分支使用,以及case语句的工作原理和应用案例。通过实例展示了如何利用if和case进行条件测试,如判断网络连接状态和处理随机数。同时,文章对比了if和case在处理不同场景时的选择,强调case在匹配特定值时的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

if语句

●单分支结构

if 条件测试操作

then 命令序列

fi

if 条件测试操作;then

命令序列

fi

●双分支结构

if 条件测试操作;then

命令序列1

else 命令序列2

fi

●多分支结构

if 条件测试操作1;then

命令序列1

elif 条件测试操作2;then

命令序列2

else

命令序列3

fi

应用案例

需求:判断当前主机是否和远程主机是否ping通

#!/bin/bash
# 该脚本用于判断当前主机是否和远程指定主机互通

read -p "请输入你要ping的主机的IP:" ip

# 使用ping程序判断主机是否互通
ping -c1 $ip &>/dev/null

if [ $? -eq 0 ];then
	echo "当前主机和远程主机$ip是互通的"
 else
 	echo "当前主机和远程主机$ip不通的"
fi

逻辑运算符
test $? -eq 0 &&  echo "当前主机和远程主机$ip是互通的" || echo "当前主机和远程主机$ip不通的"

case语句结构

case 变量值 in

模式1)

命令序列1

;;

模式2)

命令序列2

;;

……

*)

默认命令序列

esac

模式可以是一个数字、一个字符串,甚至是一个简单的正则表达式。

if else一般匹配区间范围,而case一般匹配某个值

作用场景而言,case作用于模式清单,可以写服务启动脚本

echo $RANDOM 输出随机数

echo [ [ [RANDOM%10] 输出除以10的余数

echo [ [ [RANDOM%10+1] 输出除以10的余数再加1

$[ ] :中括号中间写的是算术表达式

${ } : 把变量内容输出,使后面内容不影响变量

应用案例

需求:判断你输入的字符是数字、字母还是其他字符。


[root@server2 ~]# vi case.sh
[root@server2 ~]# chmod +x case.sh
[root@server2 ~]# ./case.sh

#!/bin/bash
# 判断输入的字符是哪种类型
read -p "请输入一个字符并按enter回车确认" key
case "$key" in
    [a-z]|[A-Z])                   匹配任意字母
         echo "您输入的是字母."    
      ;;
    [0-9])                            匹配任意数字
         echo "您输入的是数字."
      ;;     
     *)                                  匹配任意字符 
         echo "您输入的是空格,功能键,其它控制字符." 
exit 1
esac

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值