• shell条件测试与条件测试操作符


    shell 的条件测试

    (1)概述

    条件测试是 shell 编程中非常重要的一个概念,它允许我们根据某个条件是否满足,来选择执行相应的任务。

    (2)条件测试的语法

    shell 中的条件测试语法如下:

    [ 条件表达式 ]
    
    • 1

    如果条件表达式为真,则返回 0,表示测试成功;如果条件表达式为假,则返回非 0 值,表示测试失败。

    (3)条件表达式

    条件表达式可以是任何可以表示真值或假值的表达式,包括字符串比较、算术比较、文件测试、逻辑运算等。

    (4)字符串比较

    字符串比较可以使用以下操作符:

    操作符含义
    -z strstr 为空时,返回真
    -n strstr 不为空时,返回真
    str1 = str2str1 等于 str2 时,返回真
    str1 != str2str1 不等于 str2 时,返回真

    (5)算术比较

    算术比较可以使用以下操作符:

    操作符含义
    -eq等于
    -ne不等于
    -gt大于
    -ge大于或等于
    -lt小于
    -le小于或等于

    (6)文件测试

    文件测试可以使用以下操作符:

    操作符含义
    -f filefile 存在且是一个普通文件时,返回真
    -d filefile 存在且是一个目录时,返回真
    -e filefile 存在时,返回真
    -s filefile 存在且大小大于 0 时,返回真
    -r filefile 存在且可读时,返回真
    -w filefile 存在且可写时,返回真
    -x filefile 存在且可执行时,返回真

    (7)逻辑运算

    逻辑运算可以使用以下操作符:

    操作符含义
    &&逻辑与,都为真时,返回真
    \\
    !逻辑非

    扩展知识

    • 条件测试的返回值可以被用作变量的值,或者作为判断语句的条件。
    • 条件测试可以嵌套使用,以实现更复杂的逻辑判断。
    • 条件测试可以与 case 选择语句配合使用,以实现更灵活的条件判断。

    实验示例

    以下是一些使用条件测试的实验示例:

    判断变量是否为空

    #!/bin/bash
    
    name="Josh"
    
    if [ -z "$name" ]; then
        echo "变量为空"
    else
        echo "变量不为空"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行该脚本,将输出以下结果:

    变量不为空
    
    • 1

    判断文件是否存在

    #!/bin/bash
    
    file="/etc/passwd"
    
    if [ -e "$file" ]; then
        echo "文件存在"
    else
        echo "文件不存在"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行该脚本,将输出以下结果:

    文件存在
    
    • 1

    判断字符串是否相等

    #!/bin/bash
    
    str1="hello"
    str2="world"
    
    if [ "$str1" == "$str2" ]; then
        echo "字符串相等"
    else
        echo "字符串不相等"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    运行该脚本,将输出以下结果:

    字符串不相等
    
    • 1

    总结

    条件测试是 shell 编程中非常重要的一个概念,它可以帮助我们实现复杂的逻辑判断。

  • 相关阅读:
    Redis 学习笔记(五)高可用之主从模式
    [SpringBoot] AOP-AspectJ 切面技术
    每日一博 - CRUD system VS Event sourcing design
    空运知识之常用空运名词
    箱讯科技成功闯入第八届“创客中国”全国总决赛—在国际物流领域一枝独秀
    vue3实现在element Dialog 对话框中预览pdf文件
    Oracle如何快速删除表中重复的数据
    【JVM笔记】Serial回收器:串行回收
    一个命令就可启用的微信机器人WhoChat
    四万字!多线程50问!
  • 原文地址:https://blog.csdn.net/qq_39689711/article/details/133963908