本文所选的例子来自于《Advanced Bash-scripting Gudie》一书,译者 杨春敏 黄毅

 例1:
 [  -eq  ] && [ -n "`echo true 1>&2`" ]            #true。1>&2表示将标准输出输出到文件描述符2(标准错误输出:屏幕)
 [  -eq  ] && [ -n "`echo true 1>&2`" ]            #(not output)

 [  -eq  -a -n "`echo true 1>&2`" ]                #true,这是错误的结果,难道是因为单括号数值计算中有两个条件判断吗?
  [[  -eq  && -n "`echo true 1>&2`" ]               #(not output),有些-a 或 -o 不正确的情况,显然&&或||要稳妥些

-a 和 -o一般与[ ]使用,如:[ "$exp1" -a "$exp2" ]

&& 和 || 一般与[[ ]] 使用,如:[[ condition1 && condition2 ]]

 例2
 [ $a == z* ]      #模式匹配:如果$a以a开头,则为true
 [ $a == "z*" ]    #字符匹配:如果$a的值等于z*,则为true

 [ $a = z* ]       #file globbing and word splitting 将会发生,什么意思?
 [ $a = "z*" ]     #字符匹配:如果$a的值等于z*,则为true

以上属于字符串的比较,只不过==的功能在[[]]和[]中的行为是不同的。

 例3
 #只能用[[ ]] 可以进行进制转换比较

                                      #十进制
 octial=                                     #八进制
 hex=0x0f                                       #十六进制
 if [ "$decimal" -eq "$octal" ]
 then
     echo "$decimal equals $octal"
 else
      is not equal to
 fi                                                                # 不能用单括号[ ]计算!
 if [[ "$decimal" -eq "$octal" ]]
 then
  equals
 else
 echo "$decimal is not equal to $octal"
 fi                                             # 要用双括号[[ ]]计算!
 if [[ "$decimal" -eq "$hex" ]]
 then
  equals 0x0f
 else
 echo "$decimal is not equal to $hex"           #[[ $hexadecimal ]]也能计算
 fi 

《Advanced Bash-scripting Guide》学习(十八):[[ ]]与[ ]的一些特殊情况的更多相关文章

  1. 强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)

    在强化学习(十七) 基于模型的强化学习与Dyna算法框架中,我们讨论基于模型的强化学习方法的基本思路,以及集合基于模型与不基于模型的强化学习框架Dyna.本文我们讨论另一种非常流行的集合基于模型与不基 ...

  2. Scala学习十八——高级类型

    一.本章要点 单例类型可用于方法串接和带对象参数的方法 类型投影对所有外部类的对象都包含了其他内部类的实例 类型别名给类型指定一个短小的名称 结构类型等效于”鸭子类型“ 存在类型为泛型的通配参数提供了 ...

  3. Linux学习十八之、善用判断式

    原文地址:http://vbird.dic.ksu.edu.tw/linux_basic/0340bashshell-scripts_3.php 善用判断式 在第十一章中,我们提到过 $? 这个变量所 ...

  4. Java学习十八

    学习内容: 1.Java集合 1.自定义的set类添加重复数据需要在实体类中添加hashcode和equals方法. 2.查找set对象信息(以宠物猫为例) //在集合中查找花花的信息并输出 if(s ...

  5. Salesforce LWC学习(十八) datatable展示 image

    本篇参看: https://developer.salesforce.com/docs/component-library/bundle/lightning-datatable/documentati ...

  6. vue学习(十八)使用自定义指令 为字体渲染颜色

    <div id="app"> //v-color 是自定义的 <input type="text" class="form-cont ...

  7. MYSQL数据库学习十八 数据库维护和性能提高

    18.1 数据备份 可能造成数据损失的原因有: 存储介质故障:保存数据库文件的磁盘设备损坏,用户没有数据库备份导致数据彻底丢失. 用户的错误操作:如误删了某些重要数据,甚至整个数据库. 服务器的彻底瘫 ...

  8. JavaWeb学习 (十八)————JSP标签

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  9. spring学习 十八 spring的声明事物

    1.编程式事务: 1.1 由程序员编程事务控制代码.commit与rollback都需要程序员决定在哪里调用,例如jdbc中conn.setAutoCimmit(false),conn.commit( ...

  10. Python3.5学习十八 Python之Web框架 Django

    Python之Web框架: 本质:Socket 引用wsgiref创建web框架 根据web框架创建过程优化所得: 分目录管理 模板单独目录 执行不同函数单独存入一个方法py文件 Web框架的两种形式 ...

随机推荐

  1. jquery on 确认删除

    $(document).on('click', '.delbtn', function() {         if (confirm("确定要删除吗?")) {          ...

  2. Java基础—反射(转载)

    转载自: JAVA反射与注解 JAVA反射 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. 反射机制是什么 反射 ...

  3. STL之内存处理工具

    STL处理内存主要是使用五个全局函数construct,deconstruct,construct实现: template<typename T1,tyname T2> void cons ...

  4. Python替换文件内容

    #!/usr/bin/env python import fileinput for line in fileinput.input('fansik',inplace=1): line = line. ...

  5. Django——Session源码分析

    首先我们导入django.contrib.sessions.middleware这个中间件,查看里面的Session源码 from django.contrib.sessions.middleware ...

  6. mtime、atime、ctime基本解释

    不罗嗦 Access time.Modify time.Change time,也就是访问时间.修改时间和状态时间. >修改时间:文件的内容被最后一次修改的时间,我们经常用的ls -l命令显示出 ...

  7. 前端 JavaScript&Dom

    JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚本是通过嵌入在HTML中来实现 ...

  8. PAT 天梯赛 L1-046. 整除光棍 【模拟除法】

    题目链接 https://www.patest.cn/contests/gplt/L1-046 思路 用同余定理以及模拟除法. AC代码 #include <iostream> #incl ...

  9. yield 表达式形式的应用

    import random foods=['banana','apple','peach','grape','pear'] def deco(func): def wrapper(*args,**kw ...

  10. memcpy与memmove

    函数原型: void* memcpy(void *dst,void const *src,size_t count) void* memmove(void *dst,void const *src,s ...