玄子Share-Shell编程之条件语句

玄子Share-Shell编程之条件语句

条件测试操作

test命令

测试表达式是否成立,若成立返回0,否则返回其他数值

格式1:test  条件表达式
格式2:[  条件表达式  ]
# 至少应有一个空格

文件测试

[  操作符  文件或目录  ]
[root@localhost ~]# [  -d /media/cdrom  ]
[root@localhost ~]# echo $?
0
# 返回0表示条件成立
[root@localhost ~]# [  -d /media/cdrom/Server  ]
[root@localhost ~]# echo $?
1
# 返回1表示条件不成立
[root@localhost ~]# [ -d /media/cdrom ] && echo "YES"
YES 
# 逻辑与,“而且”的意思

整数值比较

[  整数1  操作符  整数2  ]
  • -eq:等于(Equal)
  • -ne:不等于(Not Equal)
  • -gt:大于(Greater Than)
  • -lt:小于(Lesser Than)
  • -le:小于或等于(Lesser or Equal)
  • -ge:大于或等于(Greater or Equal)
[root@localhost ~]# who | wc -l
7
[root@localhost ~]# [ $(who | wc -l) -gt 5 ] && echo "Too many." 
Too many.
# 用户数是否 > 5
[root@localhost ~]# [ $(who | wc -l) -ge 10 ] && echo "> = 10."
# 用户数是否 >= 10
[root@localhost ~]# FreeCC=$(free -m | grep "Mem: " | awk '{print $6}')
[root@localhost ~]# [ $FreeCC -lt 1024 ] && echo ${FreeCC}MB
275MB
# 空闲内存是否 < 1024MB

字符串比较

[  字符串1  =  字符串2 ]
[  字符串1  !=  字符串2 ]
[  -z  字符串 ]
  • =:字符串内容相同
  • !=:字符串内容不同,
  • ! 号表示相反的意思
  • -z:字符串内容为空
[root@localhost ~]# echo $LANG 
zh_CN.UTF-8
[root@localhost ~]# [ $LANG !=  "en.US" ] && echo  "Not en.US"
Not en.US
# 测试当前语言环境
[root@localhost ~]# read -p “是否覆盖现有文件(yes/no)?"  ACK
是否覆盖现有文件(yes/no)?yes
[root@localhost ~]# [ $ACK = "yes" ] && echo "覆盖"
覆盖
# 测试读入的字符串是否为 yes

逻辑测试

格式1:[  表达式1  ]  操作符  [  表达式2  ]  ... 
格式2:命令1  操作符  命令2  ... 
  • -a或&&:逻辑与,“而且”的意思
  • -o或||:逻辑或,“或者”的意思
  • !:逻辑否
[root@localhost ~]# [  -d /etc  ]  &&  [ -r /etc ] &&  echo “You can open it“
[root@localhost ~]# [  -d /etc  ]  ||  [ -d /home ] &&  echo “ok“

if 语句的结构

单分支结构

if  条件测试操作
    then   命令序列
fi
if  已用磁盘空间>80%
    then   报警
fi

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

双分支结构

if  条件测试操作
    then   命令序列1
    else   命令序列2
fi
if  80端口是否在监听
    then   网站服务已在运行
    else   启动httpd服务
fi

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多分支结构

if  条件测试操作1
    then  命令序列1
elif  条件测试操作2 
    then  命令序列2
else
  命令序列3
fi
if  分数为85~100之间
    then   判为优秀
elif   分数为70~84之间
    then   判为合格
esle
    判为不合格
fi

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

if 语句应用示例

  • 判断挂载点目录,若不存在则自动创建
[root@localhost ~]# cat chkmountdir.sh
#!/bin/bash
MOUNT_DIR="/media/cdrom/"
if [ ! -d $MOUNT_DIR ]
then
    mkdir -p $MOUNT_DIR
fi
  • 判断目标主机是否存活,显示检测结果
[root@localhost ~]# cat pinghost.sh
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
# “-c”“-i”“-W”选项,分别指定只发送三个测试包、间隔0.2秒、超时3秒
if [ $? -eq 0 ]
# 判断ping命令的检测结果,分别给出不同提示
then
    echo "Host $1 is up."
else
    echo "Host $1 is down."
fi
  • 判断分数范围,分出优秀、合格、不合格三档
[root@localhost ~]# cat gradediv.sh
#!/bin/bash
read -p "请输入您的分数(0-100):" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]
# 判断分数所在区间,给出不同的分档结果
then
    echo "$GRADE 分,优秀!"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]
then
    echo "$GRADE 分,合格!"
else
    echo "$GRADE 分,不合格!" 
fi

case 语句结构

case  变量值  in
模式1)
    命令序列1
    ;;
模式2)
    命令序列2
    ;;
    ……
* )
    默认命令序列
esac
case 分数 in
85~100)
	判为优秀
	;;
70~84)
       判为合格
	;;
	......
*)
    判为不合格
esac

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

case 语句应用示例

[root@localhost ~]# cat hitkey.sh
#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
  [a-z]|[A-Z])		
  	# 匹配任意字母
      echo "您输入的是字母."
      ;;
  [0-9])
       # 匹配任意数字
      echo "您输入的是 数字."
      ;;
  *)		
	# 匹配任意字符
  	echo "您输入的是 空格、功能键或其他控制字符."
esac

玄子Share-Shell编程之条件语句 2024-04-24

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-30 15:38:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-30 15:38:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-30 15:38:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-30 15:38:02       20 阅读

热门阅读

  1. leetcode_40.组合总和 II

    2024-04-30 15:38:02       13 阅读
  2. 什么是AI推理

    2024-04-30 15:38:02       11 阅读
  3. conda修改当前环境中的python版本

    2024-04-30 15:38:02       15 阅读
  4. 响应式布局插件

    2024-04-30 15:38:02       14 阅读
  5. 行列式求解

    2024-04-30 15:38:02       14 阅读
  6. YOLOv8+bytetrack实现多目标追踪

    2024-04-30 15:38:02       13 阅读
  7. 生成能够精确匹配原字符串的正则表达式

    2024-04-30 15:38:02       14 阅读
  8. zynq基础知识学习(1)

    2024-04-30 15:38:02       11 阅读
  9. 【软测学习笔记】Linux入门Day01

    2024-04-30 15:38:02       10 阅读
  10. 点云和去噪

    2024-04-30 15:38:02       19 阅读
  11. K8S集群安装

    2024-04-30 15:38:02       10 阅读