码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • shell中[[]]与[],=、==和-eq的辨析


    1、==、=和-eq

    在shell中,=和==运算符都可以用于判断两个字符串、两个字符串变量是否相同,== 支持模式匹配,而= 不支持模式匹配。
    使用 -eq 来判断两个整数是否相等。

    # 字符串比较
    # 给变量赋值时,等号前后没有空格,有空格时是条件判断
    string1=abc
    string2=bcd
    # [ "$string1" = "$string2" ]内的空格是必须的!!
    if [ "$string1" = "$string2" ]; then
        echo "The strings are equal"
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    #整数比较
    num1=123
    num3=123
    # 注意中括号内的空格!!
    if [ "$num1" -eq "$num2" ]; then
        echo "The numbers are equal"
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2、[[ ]] 和 [ ]

    在 shell 脚本中,[ 和 [[ 都可以用于条件测试。
      [ 是一个标准的 Unix 命令,也被称为 test。它在所有 POSIX shell 中都可用,包括 sh、bash、ksh、dash 等。
      [[ 是 bash 和其他一些现代 shell(如 zsh 和 ksh)中的关键字,提供了比 [ 更强大的功能。例如,它支持字符串模式匹配和正则表达式匹配
    在[ 和 [[ 中,进行条件判断时,是使用=还是==呢?
      对于[,一般使用=进行条件判断,==不是一个标准的运算符,但是在某些shell(比如bash)中,在[使用==是可以的。对于[[,==和=都可以在[[用于字符串比较, -eq用于整数比较。
      他们之间的对应关系: =用在[ 中; ==用在[[中。这样用是不会出错的。

    [的用例:

    if [ "$variable" = "value" ]; then
        echo "The variable equals the value"
    fi
    
    • 1
    • 2
    • 3

    [[的用例:

    # 支持通配符匹配
    if [[ "$variable" == value* ]]; then
        echo "The variable starts with 'value'"
    fi
    # 支持正则表达式匹配
    if [[ "$variable" =~ ^value ]]; then
        echo "The variable starts with 'value'"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    总结起来就是,[]支持的shell类型更多,兼容性更好,而[[]]的功能更强大。

  • 相关阅读:
    简易云在线人事管理系统
    如何在《阴阳师》游戏中使用单机单窗口软件工具进行防封技巧?
    RoadBEV:鸟瞰视图下的路面重建
    ES(Elasticsearch)中文检索使用笔记(一)
    正确查询DO基站IP
    【SwiftUI模块】0024、SwiftUI创建一个时尚的3D轮播滑块
    虹科技术 | USB设备和端口安全管理 | 如何轻松扩展端点管理
    23、短信登录(基于redis实现共享session登录)
    Google IO 2023推出Android Studio官方AI工具Studio Bot
    [翻译]理解Postgres的IOPS:为什么数据即使都在内存,IOPS也非常重要
  • 原文地址:https://blog.csdn.net/m0_47584619/article/details/133137190
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号