變數

Note from VBird

  • 變數在被取用時,前面必須要加上錢字號$才行, 或者是以 ${變數}的方式來取用

  • 變數名稱尚未被設定時,預設的內容是『空』的

  • 變數的設定規則

    • 變數與變數內容以一個等號=來連結:myname=VBird
    • 等號兩邊不能直接接空白字元,如下所示為錯誤:
      • myname = VBirdmyname=VBird Tsai
  • 變數名稱只能是英文字母與數字,但是開頭字元不能是數字,如下為錯誤:
    • 2myname=VBird
  • 變數內容若有空白字元可使用雙引號"或單引號'將變數內容結合起來,但 雙引號內的特殊字元如 $ 等,可以保有原本的特性
    • var="lang is $LANG"echo $var可得lang is zh_TW.UTF-8
  • 單引號內的特殊字元則僅為一般字元 (純文字)
    • var='lang is $LANG'echo $var可得lang is $LANG
  • 可用跳脫字元『 \ 』將特殊符號(如 [Enter], $, \, 空白字元, '等)變成一般字元,如:

    • myname=VBird\ Tsai
  • 在一串指令的執行中,還需要藉由其他額外的指令所提供的資訊時,可以使用反單引號`指令`或 $(指令)。 例如想要取得核心版本的設定:

    • version=$(uname -r)echo $version 可得『3.10.0-229.el7.x86_64』
      # 如何進入到您目前核心的模組目錄?
      [dmtsai@study ~]$ cd /lib/modules/`uname -r`/kernel
      [dmtsai@study ~]$ cd /lib/modules/$(uname -r)/kernel  # 以此例較佳!
      
  • 若該變數為擴增變數內容時,則可用 $變數名稱${變數} 累加內容,如下所示:

    • PATH="$PATH":/home/binPATH=${PATH}:/home/bin
  • 若該變數需要在其他子程序執行,則需要以 export 來使變數變成環境變數

    • export PATH
  • 通常大寫字元為系統預設變數,自行設定變數可以使用小寫字元,方便判斷

  • 取消變數的方法為使用 unsetunset 變數名稱

系統變數

$:(關於本 shell 的 PID)

  • 字號本身也是個變數喔!代表的是『目前這個 Shell的執行緒代號』,亦即是所謂的 PID (Process ID)。
    • 想要知道我們的 shell 的 PID ,就可以用:『 echo $$ 』即可!

?:(關於上個執行指令的回傳值)

  • 一般來說,如果成功的執行該指令, 則會回傳一個 0 值

陣列 (array) 變數類型

  • 陣列的設定方式是: var[index]=content
  • 『讀取』,一般來說,建議直接以 ${陣列} 的方式來讀取

變數內容的刪除、取代與替換

${變數#關鍵字} 若變數內容從頭開始的資料符合『關鍵字』,則將符合的最短資料刪除 ${變數##關鍵字} 若變數內容從頭開始的資料符合『關鍵字』,則將符合的最長資料刪除

${變數%關鍵字} 若變數內容從尾向前的資料符合『關鍵字』,則將符合的最短資料刪除 ${變數%%關鍵字}若變數內容從尾向前的資料符合『關鍵字』,則將符合的最長資料刪除

${變數/舊字串/新字串} 若變數內容符合『舊字串』則『第一個舊字串會被新字串取代』 ${變數//舊字串/新字串} 若變數內容符合『舊字串』則『全部的舊字串會被新字串取代』

results matching ""

    No results matching ""