2016-05-18 76 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