1. 程式人生 > >在shell中如何判斷一個變數是否為空

在shell中如何判斷一個變數是否為空

判斷一個指令碼中的變數是否為空,我寫了一個這樣的shell指令碼:
  1. #!/bin/sh
  2. #filename: test.sh
  3. para1=
  4. if [ ! -n $para1 ]; then
  5.   echo "IS NULL"
  6. else
  7.   echo "NOT NULL"
  8. fi 

然後把該指令碼:test.sh通過chmod +x 改為可以執行的指令碼,執行後輸出的結果為: NOT NULL,很是奇怪,最後,通過查詢一些資料發現,可以通過如下方式判斷一個shell變數是否為空:

1. 變數通過" "引號引起來

       如下所示:,可以得到結果為 IS NULL.

  1. #!/bin/sh
  2. para1=
  3. if [ ! -n "$para1" ]; then
  4.   echo 
    "IS NULL"
  5. else
  6.   echo "NOT NULL"
  7. fi 

2. 直接通過變數判斷

       如下所示:得到的結果為: IS NULL

  1. #!/bin/sh
  2. para1=
  3. if [ ! $para1 ]; then
  4.   echo "IS NULL"
  5. else
  6.   echo "NOT NULL"
  7. fi 

3. 使用test判斷

     得到的結果就是: dmin is not set!  

  1. #!/bin/sh
  2. dmin=
  3. if test -z "$dmin"
  4. then
  5.   echo "dmin is not set!"
  6. else
  7.   echo "dmin is set !"
  8. fi

4. 使用""判斷

  1. #!/bin/sh 
  2. dmin=
  3. if [ "$dmin" = "" ]
  4. then
  5.   echo "dmin is not set!"
  6. else
  7.   echo "dmin is set !"
  8. fi