我有以下情况:
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ühwirth(source)
关于linux - KSH脚本:-z和-a,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37300081/