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)