Linux——Shell指令碼中自定義變數的應用(基礎)2

Shell指令碼的應用2(基礎)

簡介:這篇文件為shell指令碼

變數

的應用,詳細講解了自定義變數

上篇文件的連結地址:

Linux——Shell指令碼的應用1(基礎)

,也是shell指令碼的基礎內容,可以透過連結地址檢視。

使用shell變數

shell變數的定義:用來存放系統和使用者需要使用的特定引數(值),而且這些引數可以根據使用者的設定或系統環境的變化而相應變化。

變數的作用:

變數名——使用固定的名稱,由系統預設或使用者定義

變數值——能夠根據使用者設定、系統環境的變化而變化

從而使shell程式更加靈活方便、適應性更強

常見的shell變數型別:

自定義變數:

由使用者自己定義、修改和使用

環境變數:

由系統維護,用於設定工作環境

位置變數:

透過命令列給指令碼程式傳遞引數

預定義變數:

Bash中內建的一類變數,不能直接修改

自定義變數

自定義變數:由系統使用者自己定義的變數,只在使用者自己的shell環境中有效,因此又稱為本地變數。

在編寫shell指令碼程式時,通常會設定一些特定的自定義變數,以適應程式執行過程中的各種變化,滿足不同的需要。

1.定義新的變數

Bash中的變數操作相對比較簡單,不像其他高階程式語言(如C++、Java等)那麼複雜。在定義一個新的變數時,一般不需要提前進行宣告,而是直接指定變數名稱並賦予初始值(內容)即可。

定義變數的基本格式:變數名=變數值

注:等號兩邊沒用空格;變數名稱需以字母或下劃線開頭,且區分大小寫。

如下圖:定義一個名為“Product”的變數(值為Python)和一個名為“Version”的變數(值為2。7)

Linux——Shell指令碼中自定義變數的應用(基礎)2

2.檢視和引用變數的值

引用變數的值:在變數名稱前新增前導符號"$"

檢視變數:使用echo命令檢視,可以在一條echo命令中檢視多個變數值

注:當變數名稱容易和緊跟其後的其他字元相混淆時,需要新增大括號“{ }”將其括起來,否則將無法確定正確的變數名稱。對於未定義的變數,將顯示為空值。如下圖:

Linux——Shell指令碼中自定義變數的應用(基礎)2

3.變數賦值的特殊操作

1)雙引號(")

雙引號作用一:

起界定字串的作用,特別是當要賦值的內容中包含空格時,必須要以雙引號括起來,否則會賦值失敗,其他情況下雙引號可以省略。如下圖:

Linux——Shell指令碼中自定義變數的應用(基礎)2

雙引號作用二:

引用其他變數的值(變數引用)

如下圖:

Linux——Shell指令碼中自定義變數的應用(基礎)2

2)單引號(')

當要賦值的內容中包含“$”或“”“或”\“等具有特殊含義的字元時,使用單引號括起來後,將無法引用其他變數的值,任何字元均作為普通字元看待,說白了就是:禁止引用其他變數值,$視為普通字元。但賦值內容中包含單引號是,需要使用”\“符號進行轉義,以免衝突。如下圖:

Linux——Shell指令碼中自定義變數的應用(基礎)2

3)反撇號(`)

用於命令替換,允許將某個命令的輸出結果賦值給變數。需要注意的是,反撇號括起來的範圍內必須是能夠被執行的命令,否則會出錯。

如下圖:

Linux——Shell指令碼中自定義變數的應用(基礎)2

上述操作相當於連續執行了兩條命令——即先透過which cd 命令查找出cd命令的絕對路徑,然後根據查詢結果列出檔案屬性。

示例:

Linux——Shell指令碼中自定義變數的應用(基礎)2

還有一個需要注意的是,使用反撇號難以在一行命令中實現巢狀命令替換操作時,可以使用”$()“來代替反撇號。

4)read命令

read命令是bash的內建命令,可以用來提示使用者輸入資訊,從而實現簡單的互動過程。即從鍵盤輸入內容為變數賦值。

為了使互動式操作的介面更加友好,提高易用性,read命令可以結合”-p“選項來設定提示資訊,以便告知使用者應該輸入什麼內容等相關事項。

示例:若希望使用者輸入備份檔案的存放目錄,並將使用者輸入的路徑資訊賦值給變數BakDir,可以執行以下操作。如下圖:

Linux——Shell指令碼中自定義變數的應用(基礎)2

4.設定變數的作用範圍

預設情況下,新定義的變數只在當前的shell環境中有效,因此成為

區域性變數。當進入子程式或新的shell環境時,區域性變數將無法再使用。

如下圖:

Linux——Shell指令碼中自定義變數的應用(基礎)2

為了使使用者定義的變數在所有的子shell環境中都能夠繼續使用,減少重複設定的工作,可以透過內部命令export將指定的變數匯出為

全域性變數。

使用者可以同時指定多個變數名稱作為引數(無須使用$符號),變數名之間以空格分隔。如下圖:

Linux——Shell指令碼中自定義變數的應用(基礎)2

5.數值變數的運算

Shell變數的運算多用於指令碼的過程控制(如迴圈次數、使用量比較等,這裡不做詳細介紹)。在Bash shell環境中,只能進行簡單的整數運算,不支援小數運算。

整數的運算主要透過內部命令expr進行。

運算格式:expr 變數1 運算子 變數2 [運算子 變數3]...

注:預算符與變數之間必須有至少一個空格。

常用的幾種運算子:

+:加法運算

-:減法運算

\*:乘法運算,注意不能僅適用”*“符號,否則將被當成檔案統配符

/:除法運算

%:求模運算 ,又稱取餘運算,用來計算數值相除後的餘數

示例:設定x的值為12,y的值為15,依次演示x、y的加、減、乘、除、取模運算。如下圖:

Linux——Shell指令碼中自定義變數的應用(基礎)2

以上所有內容為自定義變數的應用,常見的shell變數型別包括自定義變數、環境變數、位置變數、預定義變數四種,剩下的三種比較特殊,下篇文件我們再一起詳細瞭解。