Linux 之 Bash -- shell 的變量功能

變量 是bash環境中非常重要的一個東西,因爲要知道Linux是多人多任務的環境,每個人登入系統都能取得一個 bash shell。例如:使用 bash下達mail這個命令就可以接收自己的郵件,但是 bash 是如何知道你的郵件信箱是哪個文件?這就需要“變量”的幫助了。

1. 認識變量

如果使用 y=ax+b 來理解變量,可以這麼理解 --(y就是變量;(ax+b)就是變量內容)
所謂變量,就是用一個簡單的“字眼”來取代另一個比較複雜或容易變動的數據。

1.1 變數的可變性與方便性

如圖所示,由於系統已經幫我們規劃好MAIL這個變量,所以用戶只要知道mail這個指令如何使用即可,mail會主動的取用MAIL這個變量,就能夠如下所示的取得自己的郵箱信件了。


1.2 影響 bash 環境操作的變量

由於在Linux System下面,所有的線程都需要一個執行碼,在正確的登入Linux之後,這個時候你就有一個bash的執行程序,從而開始與系統溝通。
同時,由於系統需要一些變量來提供它數據的存取(或者是一些環境的設定參數值,例如是否要顯示彩色等),所以就有一些所謂的“環境變量”需要讀入系統中了。例如,PATH、HOME、MAIL、SHELL等都是很重要的。

attention: 爲了區別與自定義變量的不同,環境變量通常以 大寫字符 來表示

1.3 腳本程序設計(shell script )

再給“變量”一個簡單的定義:變量就是以一組文字或符號等,來取代一些設定或者是一串保留的數據,良好的程序設計師都會善用變量的定義。
如下:


Tips: "顯示變量"使用echo這個指令

2.變量的取用與設定

2.1 變量的取用 (echo)

“變量的取用”,聽起來很高大上,實際上就是使用echo命令查看變量的內容。
只是需要在變量名稱前面加上$,或以${變量}的方式來取用都可以。寫這麼多字不如來幾個實例:
👇這張圖來自於我的Mac終端,由於Mac終端就是使用bash,因此拿它直接練手也很方便(如果有服務器更好哦~)。


圖中,我通過echo 查看 HOME,MAIL,PATH這3個變量的內容,由於我的系統還沒有設定過"MAIL"這個變量,所以就沒有引出來內容。

2.2 變量的設定規則

  • 變量與變量內容以一個等號“=”來聯結 eg:name=panda
  • 等號兩邊不能直接接空格符,不然錯誤!eg: name = panda
  • 變量名稱只能是英文字母與數字,但是開頭字符不能是數字 eg:1name=panda
  • 變量內容若有空格符可以使用雙引號或單引號將變量內容結合起來
    -- 雙引號內的特殊字符如$等,可以保有原本的特性,如下:
    a="lang is $LANG"echo $a 可以得到 lang is zh_TW.UTF-8
    -- 單引號內的特殊字符僅爲一般字符(純文本),如下:
    a=’lang is $LANG‘echo $a 可以得到 lang is $LANG
  • 可以用跳脫字符" \ "將特殊符號變成一般字符
    name=panda\ pandaecho $name 可以得到panda panda
  • 在一串指令的執行中,還需要藉由其他額外的指令所提供的信息時,可以使用“反單引號” `指令`$(指令)
    (注意:是鍵盤上方的數字鍵1左邊那個鍵)舉例:
    version=$(uname -r) :設定 version 變量爲uname -r這個指令
    echo $version :在指令行3.10.0-229.e17.x86_64
  • 若該變量爲擴增變量內容時,則可使用如下方式累加內容
    例如:PATH="$PATH":/home/binPATH=${PATH}:home/bin
  • 若該變量需要在其他子程序執行,則需要以export來使變量變成環境變量:
    export PATH
  • 通常大寫字符爲系統默認變量,自行設定變量可以使用小寫字符,方便判斷
  • 取消變量的方法爲使用unset:「unset 變量名稱」
    例如,取消 myname 的設定 unset myname

練習~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章