作者 主題: 變數是空值 null 的問題  (閱讀 1129 次)

0 會員 與 1 訪客 正在閱讀本文。

apachectl

  • 憂鬱的高中生
  • ***
  • 文章數: 174
    • 檢視個人資料
變數是空值 null 的問題
« 於: 2015-04-10 14:01 »
假設 novar 變數不存在,用 $ 取得其值預設是null空值。做以下實驗:
# test -z "$novar";echo $?
0
# test -n "$novar";echo $?
1

以上測試是正常的,但現在如果把引號去掉再做測試:
# test -z $novar;echo $?
0
# test -n $novar;echo $?
0
此時 exit code 都是0,why??

yc123

  • 懷疑的國中生
  • **
  • 文章數: 84
    • 檢視個人資料
Re: 變數是空值 null 的問題
« 回覆 #1 於: 2015-04-10 20:12 »
個人理解如下:

# test -n "$novar";echo $?
語法變成如下:
# test -n "";echo $?

# test -n $novar;echo $?
若不加雙引號,語法變成如下:
# test -n;echo $?
« 上次編輯: 2015-04-10 20:14 由 yc123 »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17331
    • 檢視個人資料
    • http://www.study-area.org
Re: 變數是空值 null 的問題
« 回覆 #2 於: 2015-04-11 09:09 »
很棒的問題!
樓上也答得很到位!!