首页 > 系统相关 >Shell笔记:中括号[ ] 与 双中括号[[ ]]

Shell笔记:中括号[ ] 与 双中括号[[ ]]

时间:2024-01-21 11:34:12浏览次数:23  
标签:Shell 运算 符号 笔记 运算符 中括号 使用 变量

[ ][[ ]] 这两者最常用的用法就是用作条件判断,用作条件判断时, 推荐使用双中括号 [[ ]] 的方式 。需要特别注意,使用时符号边界处和操作符两边都必须要要有空格,如 [[ a > b ]] 。这里列出一些使用它们时的不同之处(了解之后就知道为什么推荐使用 [[ ]] 了):

符号性质

[ ] 是bash的内置命令,而 [[ ]] 是shell编程语言的关键字,它相当于是在 [ ] 命令的基础上进行了扩展, [ ] 可以做到的事情, [[ ]] 几乎都可以做到。

变量引用

[ ] 中使用变量必须加上 $ 符号来引用,否则会报错,而 [[ ]] 不仅兼容 $ 引用的方式,对于数字变量的比较,还可以直接使用变量名进行判断,当然如果变量的值是字符串的话,还是需要使用 $ 进行引用。

a=2
b=3
# 直接使用变量名进行比较判断
if [[ a < b ]]; then
        echo "YES"
fi

关系运算符

对于数字变量的比较,想要使用 “小于”、“大于”等关系运算, [ ] 只能使用 -lt-gt 等字母形式的表示方式,而 [[ ]] 不仅兼容这种方式,还是可以直接使用 <> 等符号的形式。

逻辑运算符

想要使用与、或等逻辑运算关系, [ ] 只能使用 -a-o 等字母的形式,而 [[ ]] 则可以使用 &&|| 等符号表示的方式,但是与前面几种运算符不同, [[ ]] 中不支持使用 -a 等方式的运算。

a=2
b=3
c=6
# 使用$(( ))获取整数运算的结果,再使用&&做逻辑与运算
if [[ a < b && $((a + b)) < c ]]; then
        echo "YES"
fi
# 使用-a做逻辑与运算
if [ ${a} -lt ${b} -a $((${a} + ${b})) -lt ${c} ]; then
        echo "YES"
fi

标签:Shell,运算,符号,笔记,运算符,中括号,使用,变量
From: https://www.cnblogs.com/guyuyun/p/17977638

相关文章

  • Shell笔记:字符串基础使用
    对于字符串变量的使用,需要加上$进行引用,特别是在[[]]中作为条件判断时没有使用$的话,无法进行正确的判断。1.判断两个字符串是否相同在[[]]使用=、==、!=判断两个字符串是否相等,如果不确定变量的数据类型,但是想要将其转换为字符串再进行比较,可以在变量外边包裹......
  • Shell笔记:变量基础使用
    语法:为my_var="hello",此处定义了一个值为字符串的变量,需要特别注意的是,等号=两边不能有空格。变量的命名只能使用英文字母,数字和下划线,且首个字符不能以数字开头。变量定义之后也可以在其他地方使用同样的语法给它重新赋值,但是注意,不可以使用$my_var="hi"这种语法,加花括号是......
  • Shell笔记:函数基础使用
    语法如下:[function]func_name(){...[returnint]}function关键字:定义一个函数,function关键字是可选的。语句结束符:函数中每个语句以换行符作为结束,不用使用分号,一行一句即可,分号通常只是用于连接两个语句。return关键字:也是可选的,不指定时自动使用最后一个语句的......
  • NCL论文阅读笔记
    ImprovingGraphCollaborativeFilteringwithNeighborhood-enrichedContrastiveLearning论文阅读笔记Abstract​ 目前的对比方法通常采用随机抽样的方式构建对比对,忽略了用户之间的相邻关系,不能充分利用对比学习作为推荐的潜力​ 为了解决上面的问题,我们提出了一种新的对......
  • 如何使用Markdown编写笔记
    Markdown是什么?Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(JohnGruber)。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。由于Markdown的轻量化、易读易写特性,并且对于图片......
  • 【数字图像处理_冈萨雷斯】笔记:(一)绪论
    一、绪论1.图像处理分类:低级处理(输入输出都是图像,如降噪、对比度增强、锐化)中级处理(输入图像输出特征,如分割、分类、识别)高级处理(远端位置识别、视觉认知)2.数字图像处理诞生可追溯至20世纪60年代,得益于机器使用和空间项目开发计算机断层成像CT和X射线是数字图......
  • 完全没有数模基础都能看懂的神经网络笔记【零基础系列】
    神经网络算法前言(可跳过)作为数模小白,看了很多讲解新概念新模型的文章,这些文章往往要么讲的很浅不讲原理只讲应用,让人知其然不知其所以然。要么讲的很深小白看不懂,同时总是忽略关键部分,经常性引入陌生概念让初学者疑惑,因此有了本文,任何能熟练掌握线性代数知识且逻辑思维能力尚可......
  • (powershell 7) 安装及 Pycharm 上的配置
    1.windows上更新powershell下载地址(此处需要爬下墙): https://github.com/PowerShell/PowerShell选择一个LTS版本直接手动安装,完成完成后,会自动添加到PATH中,如果没有,可以手动配置#打开powershell$PSVersionTable.PSVersion 2.Pycharm配置powershell Note......
  • [SQLAlchemy] SQLAlchemy学习笔记: 基础使用
    InstallationpipinstallSQLAlchemymakesurethatissql-alchemy2创建引擎数据库url格式一般为dialect+driver://username:password@host:port/database#PyMySQL-python里的数据库驱动engine=create_engine("mysql+pymysql://scott:tiger@localhost/foo?charset=utf......
  • 大三寒假学习进度笔记11
    今日对之前学习的pyspark内容进行了梳理,同时尝试了通过SparkSQL的JDBC方式从mysql读取数据和写入数据#coding:utf8frompyspark.sqlimportSparkSessionfrompyspark.sql.typesimportStructType,StringType,IntegerTypeimportpandasaspdif__name__=='__main__......