【问题标题】:KSH scripting: -z and -aKSH 脚本:-z 和 -a
【发布时间】:2016-09-14 23:13:41
【问题描述】:

我有以下情况:

 if [ ! -z $DateC -a "$DateC"=="$DateJ" ] 

如果想知道 -z 和 -a 的含义。我不明白这个条件验证了什么。我已经在网上搜索了 -a 和 -z ,但我并没有真正了解它的作用。有什么帮助吗?

【问题讨论】:

    标签: linux ksh


    【解决方案1】:

    请检查man test

       -z STRING
              the length of STRING is zero
       EXPRESSION1 -a EXPRESSION2
              both EXPRESSION1 and EXPRESSION2 are true
    

    所以这会检查$DateC 的长度是否不为零并且$DateC$DateJ 是否相等。

    if [ ! -z $DateC -a "$DateC"=="$DateJ" ] 
    #      ^^^^^^^^^ ^^
    #         |     AND
    #         |
    #      length of string is zero
    #
    #    ^^^^^^^^^^^^^^^^^^^^^^^^^^
    #    length of string is NOT zero
    

    看一个例子:

    $ r=hello
    $ s=hello
    $ [ "$r"=="$s" ] && echo "yes" || echo "no"
    yes
    

    其他条件:

    $ t=""
    $ if [ ! -z "$t" -a "$r"=="$s" ]; then echo "yes"; else echo "no"; fi
    no
    $ t=a
    $ if [ ! -z "$t" -a "$r"=="$s" ]; then echo "yes"; else echo "no"; fi
    yes
    

    最后,

    请注意,POSIX 建议将 &&||-a-o 上的单括号符号,所以如果你正在写 可移植代码使用第一个符号,否则第二个并跳过 第三,特别是因为如果你 需要对表达式进行分组。 – Adrian Frühwirth (source)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      相关资源
      最近更新 更多