判斷符號 [ ]

  1. 在中括號 [ ] 內的每個元件都需要有空白鍵來分隔,以下說明空白鍵使用『□』來表示:
    [ "$HOME" == "dywang" ]
    [□"$HOME"□==□"dywang"□]
     ↑       ↑  ↑       ↑
    
  2. [ -z "$name" ] 判斷變數 name 是否是空字串?
    [dywang@dywmac zzz]$ [ -z "$name" ] && echo "No name" || echo "name=$name"
    No name
    [dywang@dywmac zzz]$ name=dywang; [ -z "$name" ] && echo "No name" || echo "name=$name"
    name=dywang
    
  3. 在中括號內,變數沒用引號括起來,當變數沒設定、是空字串、含空隔或特殊字元,判斷會出錯。
    [dywang@dywmac zzz]$ name="De Yu"; [ $name == "De Yu" ] && echo "Y" || echo "N"
    bash: [: too many arguments
    N
    
  4. 在中括號內,變數要用單引號括起來,不會解析變數內容,所以判斷出錯。
    [dywang@dywmac zzz]$ [ '$name' == "De Yu" ] && echo "Y" || echo "N"
    N
    
  5. 在中括號內,變數要用雙引號括起來,解析變數內容後成功判斷。
    [dywang@dywmac zzz]$ [ "$name" == "De Yu" ] && echo "Y" || echo "N"
    Y