Shell變數基礎詳解 Authority

2022-09-23 03:27:10 字數 2736 閱讀 2298

一、變數簡介

變數是暫時儲存資料的地方及資料標記,所儲存的資料存在於記憶體空間中,通過正確地呼叫記憶體空間中變數的名字就可以取出與變數對應的資料。使用變數的最大好處就是使程式開發更為方便,當然,在程式設計中使用變數也是必須的。否則就很難完成相關的工作。

變數賦值的方式:先寫變數名稱,緊接著就是「=」,最後是值。「=」號前後不允許有空格。一般情況下,定義變數時,需要給變數的值帶雙引號,以防止出錯,特別是當值的內容中有空格時,必須帶雙引號。

二、變數的型別

變數可分為兩大類:

環境變數也可稱為全域性變數,可以在建立它們的shell及其派生出的任意子shell中使用。環境便令也可分為自定義環境變數和bash內建的環境變數;

普通變數也可稱為區域性變數,只能在建立它們的shell函式或shell指令碼中使用。

三、環境變數

環境變數一般是指用「export」內建命令匯出的便令,用於定義shell的執行環境,保證shell命令的正確執行。

環境變數可以在命令列設定和建立,但使用者退出命令行時,這些變數值也會隨之丟失,因此,如果希望永久儲存環境便令,可在使用者家目錄下的.bash_profile或.bashrc檔案中,或者全域性配置/etc/profile或/etc/bashrc 檔案中。在講環境變數放入以上檔案中,每次使用者登入時這些變數都將被初始化。

按照系統規範,所有的環境的名稱均採用大寫形式(不是必須,只是習慣而已)。在將環境變數應用於使用者程序程式之前,都應該用「export」命令到處定義。

系統中一些常見的環境變數,比如:home、path、shell、uid、user等,在使用者登入之前就已經被/bin/login程式設定好了。通常環境變數被定義並儲存在使用者家目錄下的.bash_profile檔案或全域性的配置檔案/etc/profile檔案中。

檢視設定的變數時,有三個命令可以顯示變數的值:① set:輸出所有的變數,包括全域性變數和區域性變數;② env:只顯示全域性變數;③ declare:輸出所有的變數、函式、整數和已經匯出的變數。

1)設定環境變數

如果想要設定環境變數,就要在給變數賦值之後或在設定變數時使用「export」命令。

語法格式:①export 變數名=value②變數名=valueexport 變數名

當然除了使用「export」命令,還可以使用帶「-x」選項的declare內建命令可以同樣設定為相同的效果。

語法格式:

declare -x 變數名=value

如果想要讓環境變數永久生效的方法:

針對使用者:可將變數內容寫在/root/.bashrc(推薦)、/root/.bash_profile檔案中即可;

針對全域性:可將變數內容寫在/etc/bashrc(推薦)、/etc/profile檔案中即可;

如果想讓系統開機之後自動執行指令碼,只需將指令碼檔名稱放在/etc/profile.d/目錄下即可!

2)環境變數生效順序

在登入linux系統並啟動乙個bash shell時,預設情況下,bash會在若干檔案中查詢環境的設定。這些檔案可統稱為系統環境檔案。bash檢查的環境變數檔案的情況取決於系統執行shell的方式。

系統執行shell的方式一般有三種:① 通過系統使用者登入後預設執行的shell;② 非登入互動式執行shell;③ 執行指令碼執行非互動式shell。

當使用者登入系統後。shell會作為登入shell啟動,此時的登入shell載入環境變數的順序,如圖:①使用者登入系統後首先載入/etc/profile(全域性環境變數檔案)。這是linux系統上預設的shell主環境變數檔案。系統任何使用者登入都會載入這個環境變數檔案;②當載入完/etc/profile檔案後,才會執行/etc/profile.d目錄下的指令碼檔案;③之後開始執行$home/.bash_profile(使用者環境變數檔案);在這個檔案中,又會去找$home/.bashrc(使用者環境變數檔案);在這個檔案中,又會去找/etc/bashrc(全域性環境變數檔案)。

如果使用者的shell不是登入時啟動的(比如切換shell或者ssh遠端登入),那麼這種非登入shell只會載入$home/.bashrc(使用者環境變數檔案),並會去找/etc/bashrc(全域性環境變數檔案)。因此如果希望在非登入shell下也可督導設定的環境變數等內容,就需要將變數設定寫在$home/.bashrc(使用者環境變數檔案)或/etc/bashrc(全域性環境變數檔案)。千萬不要寫到$home/.bash_profile(使用者環境變數檔案)或/etc/profile(全域性環境變數檔案)!!!

四、普通變數

1)定義本地變數

本地變數只能在使用者當前shell生存期中使用!

定義的方法有三種:

①變數名=value

②變數名='value'

③變數名="value"

這三種定義變數檔案的區別:

第一種(不加任何引號):當內容為簡單連續的數字、字串、路徑名時,可以這樣使用。不加引號時,值裡有變數時會被解析後在輸出;

第二種(單引號):這種定義方式的特點是:輸出變數內容時單引號裡是什麼就輸出什麼,不管內容中是否有變數和命令(需用翻反撇號括起來)。也會把他們原樣輸出。比較適合定義純字串的情況。

第三種(雙引號):這種定義方式的特點是:輸出變數內容時引號中的變數及命令經過解析後再輸出內容。而不是和第二種(單引號)一樣原樣輸出。這種方式比較適合於字串中附帶變數及命令(需用翻反撇號括起來)並且想將其解析後再輸出的變數定義。

2)將命令作為作為變數值

將命令作為作為變數值方法有兩種:

①變數名=`命令`

//用反撇號將命令括起來

②變數名=$(命令)

//推薦使用

注意當乙個變數後面還有其他字元時,必須將變數加上「{}」。

shell變數詳解

1 shell變數基礎 shell變數是一種很 弱 的變數,預設情況下,乙個變數儲存乙個串,shell不關心這個串是什麼含義。所以若要進行數 算,必須使用一些命令例如let declare expr 雙括號等。shell變數可分為兩類 區域性變數和環境變數。區域性變數只在建立它們的shell中可用。...

詳解shell 變數

1.簡介 變數是任何一種程式語言都必不可少的組成部分,變數用來存放各種資料。指令碼語言在定義變數時通常不需要指明型別,直接賦值就可以,shell變數也遵循這個規則。在bash shell 中,每乙個變數的值都是字串,無論你給變數賦值時有沒有使用引號,值都會以字串的形式儲存。這意味著,bash she...

Shell 基礎 shell 變數

變數中只能包含字母 數字 下劃線,不能以數字開頭 不能包含bash中的關鍵字 變數賦值時,變數和等號 之間不能有空格 yourname abc 注意變數和 之間不能有空格 使用變數時,需要在變數前加 使用 youname或 例子 新建檔案,檔案內容如下 yourname lisen 變數賦值 ech...