• shell脚本[] [[]] -n -z 的含义解析


    在写脚本的时候,总是搞不懂[] [[]]的区别,这次写一个总结,把它掌握牢固

    应用场景分析:

    1、在中括号中,判断变量的值, 加不加双引号的问题?

    -z 判断 变量的值,是否为空; zero = 0

    - 变量的值,为空,返回0,为true
    - 变量的值,非空,返回1,为false
    -n 判断变量的值,是否为空 name = 名字 (变量必须带“”号,不然全部为真)
    - 变量的值,为空,返回1,为false
    - 变量的值,非空,返回0,为true
    pid="123"
    [ -z "$pid" ] 单对中括号变量必须要加双引号
    [[ -z $pid ]] 双对括号,变量不用加双引号
     
    [ -n "$pid" ] 单对中括号,变量必须要加双引号
    [[ -z $pid ]] 双对中括号,变量不用加双引号
    2、多个条件判断,[] 和 [[]] 的区别?
    2.1:[[ ]] 双对中括号,是不能使用 -a 或者 -o的参数进行比较的;
    && 并且 || 或 -a 并且 -o 或者
    [[ ]] 条件判断 && 并且 || 或
     
    [[ 5 -lt 3 || 3 -gt 6 ]] 一个条件,满足,就成立 或者的关系
    [[ 5 -lt 3 || 3 -gt 6 ]] 一个条件满足,就成立 或者的关系
     
    [[ 5 -lt 3 ]] || [[3 -gt 6 ]]
    [[ 5 -lt 3 ]] || [[3 -gt 6 ]] 写在外面也可以
     
     
    && 必须两个条件同时满足,和上述一样,这里想说明的问题的是:
     
    [[ 5 -lt 3]] -o [[ 3 -gt 6 ]] [[ 5 -lt 3 -o 3 -gt 6 ]]
    [[ 5 -lt 3 -a 3 -gt 6 ]] [[ 5 -lt 3 -a 3 -gt 6 ]]
    -a 和 -o就不成立了,是因为,[[]] 双对中括号,不能使用 -o和 -a的参数
    直接报错:
    2.2 [ ] 可以使用 -a -o的参数,但是必须在 [ ] 中括号内,判断条件,例如:
    [ 5 -lt 3 -o 3 -gt 2 ] 或者条件成立
    [5 -lt 3 ] -o [ 3 -gt 2] 或者条件, 这个不成立,因为必须在中括号内判断
     
    如果想在中括号外判断两个条件,必须用&& 和 || 比较
    [5 -lt 3 ] || [ 3 -gt 2]
    [5 -gt 3 ] && [ 3 -gt 2] 成立
     
    相对的,|| 和 && 不能在中括号内使用,只能在中括号外使用
    3、当判断某个变量的值是否满足正则表达式的时候,必须使用[[ ]] 双对中括号
    单对中括号,直接报错:
  • 相关阅读:
    Git fetch和git pull的区别
    gitlab数据迁移
    阿里云CentOS7挂载SSD云盘的方法
    phpQuery的用法
    用shell查找某目录下的最大文件
    gearman 简介
    学习笔记(3)——实验室集群WMS服务配置
    学习笔记(2)——实验室集群LVS配置
    Fedora16的双显卡切换问题
    学习笔记(1)——实验室集群配置
  • 原文地址:https://www.cnblogs.com/libertylife/p/9323682.html
Copyright © 2020-2023  润新知