變數的設定

  1. 變數設定方式
    變數設定方式 str 沒有設定 str 為空字串 str 為非空字串
    var=${str-expr} var=expr var= var=$str
    var=${str:-expr} var=expr var=expr var=$str
    var=${str+expr} var= var=expr var=expr
    var=${str:+expr} var= var= var=expr
    var=${str=expr} str=expr str 不變 str 不變
    var=expr var= var=$str
    var=${str:=expr} str=expr str=expr str 不變
    var=expr var=expr var=$str
    var=${str?expr} expr 輸出至 stderr var= var=$str
    var=${str:?expr} expr 輸出至 stderr expr 輸出至 stderr var=$str
  2. 若 str 這個變數內容存在,則 var 設定為 str ,否則 var 設定為 "newvar"。str 不存在時 var 為 newvar,str 存在時 var 等於 str 的內容。
    [root@dyw219 ~]# unset str; var=${str:-newvar}
    [root@dyw219 ~]# echo var="$var", str="$str"
    var=newvar, str=
    [root@dyw219 ~]# str="oldvar"; var=${str-newvar}
    [root@dyw219 ~]# echo var="$var", str="$str"
    var=oldvar, str=oldvar
    
  3. 若 str 不存在,則 var 與 str 均設定為 newvar,否則僅 var 為 newvar。str 不存在時 var/str 均為 newvar,str 存在時 var 等於 str 的內容。
    [root@dyw219 ~]# unset str; var=${str=newvar}
    [root@dyw219 ~]# echo var="$var", str="$str"
    var=newvar, str=newvar
    [root@dyw219 ~]# str="oldvar"; var=${str=newvar}
    [root@dyw219 ~]# echo var="$var", str="$str"
    var=oldvar, str=oldvar
    
  4. 若 str 這個變數存在,則 var 等於 str ,否則輸出 "novar"。str 不存在時輸出錯誤訊息,str 存在時 var 等於 str 的內容。
    [root@dyw219 ~]# unset str; var=${str?novar}
    -bash: str: novar
    [root@dyw219 ~]# str="oldvar"; var=${str?novar}
    [root@dyw219 ~]# echo var="$var", str="$str"
    var=oldvar, str=oldvar
    
  5. 上面這三個案例都沒有提到當 str 有設定,且為空字串的情況,請練習。

  DYWANG_HOME