• 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 编程中非常重要的一个概念,它可以帮助我们实现复杂的逻辑判断。

  • 相关阅读:
    【日常业务开发】接口性能优化
    ansible
    计算机毕业设计springboot酒店管理系统uah43源码+系统+程序+lw文档+部署
    Upload-labs(Pass3-4)
    Spring Bean 的生命周期
    算法提高:树型动态规划(二叉树找到两个节点的最近公共祖先)
    mysql主从复制和读写分离
    AJAX概念
    【Spring Boot 集成应用】Spring Boot Admin的集成配置使用
    最新 | VDA-ISA5.0.4最新版本发布,汽车企业如何增强信息安全?
  • 原文地址:https://blog.csdn.net/qq_39689711/article/details/133963908