0
我有以下条件:KSH脚本:-z和-a
if [ ! -z $DateC -a "$DateC"=="$DateJ" ]
如果有想知道-z和-a手段。我不明白这种情况证实了什么。我已经在网上搜索了-a和-z,但我并没有真正了解它的功能。任何帮助,请问?
我有以下条件:KSH脚本:-z和-a
if [ ! -z $DateC -a "$DateC"=="$DateJ" ]
如果有想知道-z和-a手段。我不明白这种情况证实了什么。我已经在网上搜索了-a和-z,但我并没有真正了解它的功能。任何帮助,请问?
检查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)