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

文章目录

    • 一、条件测试操作
        • test命令
        • 1、文件测试
            • 常用的测试操作符
        • 2、整数值比较
            • 常用的测试操作符
        • 3、字符串比较
            • 常用的测试操作符
        • 4、逻辑测试
            • 常用的测试操作符
    • 二、if语句的结构
        • 单分支结构
        • 双分支结构
        • 多分支结构
    • 三、case分支语句
        • 1、case多分支语句针对变量的不同取值,分别执行不同的命令序列
        • 2、示例

一、条件测试操作

test命令

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

格式1:test 条件表达式

格式2:[ 条件表达式 ]

1、文件测试

[ 操作符 文件或目录 ]

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

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

方法一:使用test

Shell——条件语句(if、case)_第1张图片

方法二:使用 [ ]

Shell——条件语句(if、case)_第2张图片

2、整数值比较

[ 整数1 操作符 整数2]

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

Shell——条件语句(if、case)_第3张图片
在这里插入图片描述
Shell——条件语句(if、case)_第4张图片
Shell——条件语句(if、case)_第5张图片

3、字符串比较

格式1:

[ 字符串1 = 字符串2 ]

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

格式2:

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

Shell——条件语句(if、case)_第6张图片
Shell——条件语句(if、case)_第7张图片
Shell——条件语句(if、case)_第8张图片

4、逻辑测试

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

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

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

在这里插入图片描述

二、if语句的结构

单分支结构

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

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

Shell——条件语句(if、case)_第9张图片

双分支结构

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

条件不成则执行else面的命令2
Shell——条件语句(if、case)_第10张图片

多分支结构

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

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

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

条件2不成立则默认执行else后面的命令
Shell——条件语句(if、case)_第11张图片

单分支if语句:

Shell——条件语句(if、case)_第12张图片

Shell——条件语句(if、case)_第13张图片

双分支:

Shell——条件语句(if、case)_第14张图片

Shell——条件语句(if、case)_第15张图片

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

ping -c 发送3个包

-i 每个包间隔0.2秒

-W 等在3秒

$1 位置变量 脚本后面可以跟一个参数
Shell——条件语句(if、case)_第16张图片
Shell——条件语句(if、case)_第17张图片
Shell——条件语句(if、case)_第18张图片

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

Shell——条件语句(if、case)_第19张图片

Shell——条件语句(if、case)_第20张图片

三、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

你可能感兴趣的:(Shell)