我有以下情况:

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

如果我想知道-z和-a是什么意思。我不明白这种情况证明了什么。我在网上搜过-a和-z,但我真的不明白它的作用。有什么帮助吗?

最佳答案

请检查以下内容:

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

因此,这将检查man test的长度是否不为零并且$DateC$DateC是否相等。
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建议在
单括号符号在$DateJ&&上,所以如果您正在编写
可移植代码使用第一个符号,否则使用第二个符号并跳过
第三个,尤其是如果你
需要对表达式分组。-Adrian Frühwirthsource

关于linux - KSH脚本:-z和-a,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37300081/

10-12 17:38