變數設定規則

  1. 變數與變數內容以等號『=』來連結;
    [root@dyw219 ~]# name=dywang
    
  2. 使用 ${} 取變數內容用。
    [root@dyw219 ~]# echo ${name}
    dywang
    
  3. 取變數內容,變數後沒接數字或英文字母,大括號可以不用。
    [root@dyw219 ~]# echo $name
    dywang
    
  4. 等號兩邊不能直接接空白字元;
    [root@dywmac ~]# name = dywang
    -bash: name: command not found
    
  5. 變數名稱只能是英文字母與數字,但是數字不能是開頭字元;
    [root@dyw219 ~]# 12name=dywang
    -bash: 12name=dywang: command not found
    
  6. 若有空白字元可以使用雙引號『 " 』或單引號『 ' 』來將變數內容結合起來。
    1. 雙引號內的特殊字元可以保有變數特性,
      [root@dyw219 ~]# name=dywang; myname="variable name is $name"
      [root@dyw219 ~]# echo $myname
      variable name is dywang
      
    2. 單引號內的特殊字元則僅為一般字元;
      [root@dyw219 ~]# name=dywang; myname='variable name is $name'
      [root@dyw219 ~]# echo $myname
      variable name is $name
      
  7. 必要時需要以跳脫字元『 \ 』來將特殊符號 ( 如 Enter, $, \ , 空白字元, ' 等 ) 變成一般符號。
    1. 變數 name 設定為 dywang's name,沒有加單引號或雙引號,則 dywang 及 s 之間的單引號沒有配對,出現 > 要繼續輸入,按 Ctrl+C 中斷輸入。
      [root@dywmac ~]# name=dywang's name
      > -bash: unexpected EOF while looking for matching `”
      -bash: syntax error: unexpected end of file
      
    2. 利用雙引號將包含單引號及空白的字串,設定給變數 name。
      [root@dywmac ~]# name="dywang's name" ; echo $name
      dywang's name
      
    3. 利用反斜線 \ 跳脫單引號與空白鍵也可以。
      [root@dywmac ~]# name=dywang\'s\ name ; echo $name
      dywang's name
      
  8. 在一串指令中,還需要藉由其他的指令提供的資訊,指令先執行:
    1. 使用 quote 『 ` command` 』,符號 ` 是鍵盤上方的數字鍵 1 左邊那個按鍵,而不是單引號。以指令 uname 查詢目前核心版本,並切換到此版本的模組目錄。
      [root@dywmac ~]# uname -r
      4.4.5-1.el6.elrepo.x86_64
      [root@dywmac ~]# cd /lib/modules/`uname -r`
      [root@dywmac 4.4.5-1.el6.elrepo.x86_64]# pwd
      /lib/modules/4.4.5-1.el6.elrepo.x86_64
      [root@dywmac 4.4.5-1.el6.elrepo.x86_64]# cd
      [root@dywmac ~]#
      
    2. 使用 $(command) 一樣可以先執行 command,取得結果。
      [root@dywmac ~]# cd /lib/modules/$(uname -r)
      [root@dywmac 4.4.5-1.el6.elrepo.x86_64]# pwd
      /lib/modules/4.4.5-1.el6.elrepo.x86_64
      [root@dywmac 4.4.5-1.el6.elrepo.x86_64]# cd
      [root@dywmac ~]#
      
  9. 擴增變數內容
    1. 變數 var 後不是數字或英文字元,可以不加雙引號或不用大括號。
      [root@kvm6 ~]# var='123456'
      [root@kvm6 ~]# var=$var:7890 ; echo $var
      123456:7890
      
    2. 變數 var 後是數字或英文字元,此例是 1,取變數時會取 var1,但 var1 沒設定,所以輸出只有 :7890。
      [root@kvm6 ~]# var=$var1:7890 ; echo $var
      :7890
      
    3. 要避免變數與後面的字元混淆,必須用大括號括起變數。
      [root@kvm6 ~]# var=${var}1:7890 ; echo $var
      123456:7890
      
  10. unset 取消變數。
    [root@kvm6 ~]# var=1237890 ; echo $var
    1237890
    [root@kvm6 ~]# unset var; echo $var