zoukankan      html  css  js  c++  java
  • 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、当判断某个变量的值是否满足正则表达式的时候,必须使用[[ ]] 双对中括号

    单对中括号,直接报错:

    ---------------------

    来源:CSDN
    原文:https://blog.csdn.net/keep_lcm/article/details/80551435

    文件表达式
    -e filename 如果 filename存在,则为真
    -d filename 如果 filename为目录,则为真 
    -f filename 如果 filename为常规文件,则为真
    -L filename 如果 filename为符号链接,则为真
    -r filename 如果 filename可读,则为真 
    -w filename 如果 filename可写,则为真 
    -x filename 如果 filename可执行,则为真
    -s filename 如果文件长度不为0,则为真
    -h filename 如果文件是软链接,则为真
    filename1 -nt filename2 如果 filename1比 filename2新,则为真。
    filename1 -ot filename2 如果 filename1比 filename2旧,则为真。


    整数变量表达式
    -eq 等于
    -ne 不等于
    -gt 大于
    -ge 大于等于
    -lt 小于
    -le 小于等于


    字符串变量表达式
    If  [ $a = $b ]                 如果string1等于string2,则为真
                                    字符串允许使用赋值号做等号
    if  [ $string1 !=  $string2 ]   如果string1不等于string2,则为真       
    if  [ -n $string  ]             如果string 非空(非0),返回0(true)  
    if  [ -z $string  ]             如果string 为空,则为真
    if  [ $sting ]                  如果string 非空,返回0 (和-n类似) 


        逻辑非 !                   条件表达式的相反
    if [ ! 表达式 ]
    if [ ! -d $num ]               如果不存在目录$num


        逻辑与 –a                   条件表达式的并列
    if [ 表达式1  –a  表达式2 ]


        逻辑或 -o                   条件表达式的或
    if [ 表达式1  –o 表达式2 ]

    实例:

    #!/bin/bash
    #if [ -d x.txt ]

    if [ -d ]
    then
    cd toolchain;
    ls *.patch | sort
    #FILES=$$(ls *.patch | sort);
    echo "ok"
    else
    echo "nok"
    fi

    每日一言:善学者尽其理,善行者究其难  ---荀子

    参考文档: https://blog.csdn.net/superbfly/article/details/49274889 

      

    作者:虚生
  • 相关阅读:
    文本框测试用例
    用Apache生产csr申请证书
    apche配置后报错(Forbidden)没有权限
    Apache+Tomcat配置方法
    从程序员到项目经理:项目经理必须懂的一些章法
    linux 常见命令20200424
    Linux如何通过命令查看日志文件的某几行(中间极几行或最后几行)
    JPA和Hibernate的关系
    SpringBoot添加webapp目录
    @NotNull, @NotEmpty和@NotBlank之间的区别是什么?
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/10724171.html
Copyright © 2011-2022 走看看