2016-05-18 51 views
0

我有以下条件:KSH脚本:-z和-a

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

如果有想知道-z和-a手段。我不明白这种情况证实了什么。我已经在网上搜索了-a和-z,但我并没有真正了解它的功能。任何帮助,请问?

回答

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ühwirthsource