Shell——条件语句(if、case)

一、条件测试操作

test命令

  • 测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值

格式1:test 条件表达式

格式2:[ 条件表达式 ]

1、文件测试

[ 操作符 文件或目录 ]

常用的测试操作符
  • -d:测试是否为目录(Directory)
  • -e:测试目录或者文件是否存在(Exist)
  • -f:测试是否为文件(File)
  • -r:测试当前用户是否有权限读取(Read)
  • -w:测试当前用户是否有权限写入(Write)
  • -x:测试当前用户是否有权限执行(eXcute)

判断文件或目录是否存在:

方法一:使用test

在这里插入图片描述

方法二:使用 [ ]

在这里插入图片描述

2、整数值比较

[ 整数1 操作符 整数2]

常用的测试操作符
  • -eq:等于(Equal)
  • -ne:不等于(Not Equal)
  • -gt:大于(Greater Than)
  • -lt:小于(Lesser Than)
  • -le:小于或等于(Lesser or Equal)
  • -ge:大于或等于(Greater or Equal)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、字符串比较

格式1:

[ 字符串1 = 字符串2 ]

[ 字符串1 != 字符串2 ]

格式2:

[ -z = 字符串 ]
常用的测试操作符
  • =:字符串相同
  • !=:字符串内容不同,!号表示相反的意思
  • -z:字符串内容为空

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、逻辑测试

格式1:[ 表达式1 ] 操作符 [ 表达式2 ] …

格式2:命令1 操作符 命令2 …

常用的测试操作符
  • -a或&& :逻辑与,“而且”的意思
  • -o或|| :逻辑或,“或者”的意思
  • ! :逻辑否

在这里插入图片描述

二、if语句的结构

单分支结构

条件成立则继续执行then后面的命令

条件不成立将不执行,直接exit退出结束

在这里插入图片描述

双分支结构

条件成立则执行then后面的命令1

条件不成则执行else面的命令2
在这里插入图片描述

多分支结构

条件1成立则执行then后面的命令1

条件1不成立则执行条件2

条件2成立则执行then后面的命令

条件2不成立则默认执行else后面的命令
在这里插入图片描述

单分支if语句:

在这里插入图片描述

在这里插入图片描述

双分支:

在这里插入图片描述

在这里插入图片描述

双分支if语句:判断目标主机是否存在,显示检测结果

ping -c 发送3个包

-i 每个包间隔0.2秒

-W 等在3秒

$1 位置变量 脚本后面可以跟一个参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多分支if语句:判断分数范围

在这里插入图片描述

在这里插入图片描述

三、case分支语句

1、case多分支语句针对变量的不同取值,分别执行不同的命令序列

if语句:适用于判断区间范围
case语句:适用于判断某一个固定值,固定字符串

2、示例

击键类型识别key

#!/bin/bash
read -p "请敲击一个键:" key
case $key in
        [0-9])
                echo "你敲击的是一个数字"
                ;;
        [a-z]|[A-Z])
                echo "你敲击的是一个字母"
                ;;
        *)
                echo "你敲击的是一个符号或功能键"
esac

成绩判定

#!/bin/bash
read -p "请输入你的成绩:" ji
case "$ji" in
[0-9]|[1-5][0-9])
        echo "你的成绩不合格"
        ;;
6[0-9]|7[0-4])
        echo "你的成绩合格"
        ;;
7[5-9]|8[0-4])
        echo "你的成绩良好"
        ;;
8[5-9]|9[0-9]|100)
        echo "你的成绩优秀"
        ;;
*)
        echo "输入错误,请输入0-100之间的整数"
esac
发布了72 篇原创文章 · 获赞 44 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ML908/article/details/103411109