0
我如何寫POSIX shell腳本做兩件事情:問題的條件判斷
1)當$ VAR1或$ VAR2定義和非空,回聲「成功」
2)當$ VAR3是回聲「success2」
我嘗試了許多-ne -z和-a操作符的組合,但我沒有運氣。
我如何寫POSIX shell腳本做兩件事情:問題的條件判斷
1)當$ VAR1或$ VAR2定義和非空,回聲「成功」
2)當$ VAR3是回聲「success2」
我嘗試了許多-ne -z和-a操作符的組合,但我沒有運氣。
(我測試在POSIX模式下的Bash shell下 - 我不能絕對肯定,這一切是嚴格POSIX)
$ var1=
$ var2=
$ if [ -n "$var1" -o -n "$var2" ]; then echo "success"; fi
$ var2=1
$ if [ -n "$var1" -o -n "$var2" ]; then echo "success"; fi
success
$ var3=
$ if [ -n "${var3+X}" ]; then echo "success2"; fi
success2
$ unset var3
$ if [ -n "${var3+X}" ]; then echo "success2"; fi
$
的第一個條件[ -n "$var1" -o -n "$var2" ]
發生的事實不可─優勢空要求也意味着變量被設置。
第二種情況更棘手。 "${var3+X}"
expands如果var3
未被設置則爲空,如果被設置則爲X
。這樣你就可以區分unset和null變量。
謝謝。我忽略了似乎會產生不一致結果的變量調用周圍的引號。 – kaykun 2011-03-05 09:49:54