系統啟動後會產生許多環境變數,使用者可以使用 set 命令檢視這些環境變數
家目錄位置變數 home
系統語言變數 lang
臨時修改系統語言可以重新指定此變數的值:
lang=zh_cn.utf-8
互動程式變數 shell
命令搜尋路徑變數 path
主提示符變數 ps1
#檢視當前使用的主提示符表示式
輔助提示符變數 ps2
唯讀環境變數
檢視系統中的唯讀環境變數如下:
在配置檔案中修改環境變數
傳遞引數的位置變數
bash 定義了 9 個位置變數,分別是$1、 $2、 $3、 $4…$9。指令碼編寫者在指令碼中引用這 9 個變數,獲取傳遞給指令碼的引數。
系統預先定義的變數
常見的預定義變數及其含義如下
$0:儲存當前程或指令碼的名稱。
$*:儲存傳遞給指令碼或程序的所有引數。
$$:當前程序或指令碼的 pid 號。
$!:後台執行的最後乙個程序的 pid 號。
$?:用於返回上一條命令是否成功執行。如果成功執行,將返回數字 0,否則返回非零數字(通常情況下都返回數字 1)。
$#:用於儲存指令碼的引數個數。
使用者自定義變數補充知識:
如果使用者希望定義乙個不能更改值的唯讀變數,可以先定義變數,然後使用readonly 命令將變數轉換為唯讀變數。
#定義變數 pi
# pi=3.14
#使用命令 readonly 將變數 pi 轉換為唯讀變數,然後驗證
# readonly pi
# pi=3.1415
-bash: pi: readonly variable
使用變數運算的例子:
#先定義變數 a 和 b 的值
# a=12
# b=12
#使用 expr 命令計算變數 a、 b 之和、
# expr $a + $b
24使用環境變數$random 產生隨機數
清除變數可以使用命令 unset:
shell 中的陣列
與使用變數一樣,使用陣列前也必須對其進行定義(許多程式語言將這個過程稱為宣告),定義陣列時應該為其賦值。
【 陣列的格式】
完整的陣列元素由陣列名和索引組成,其格式如下:
array[index]
【 定義資料】
( 1)在 bash 中定義陣列有兩種方法,第一種方法是直接在定義時為所有的陣列元素
賦值:#在定義陣列時為其賦值
# array=(1 2 3 4 5)
使用這種方法對陣列進行定義時,系統會自動為陣列中的各元素進行賦值操作。例如
上面的示例中,會自動為 array[0]賦值為 1、 array[1]賦值為 2……依此類推,直到完
成對所有陣列元素的賦值操作為止。
( 2)第二種方法是對陣列中的每個陣列元素進行賦值:
#為陣列中的特定元素賦值
# array[0]=1; array[4]=5; array[3]=4
使用這種方法對陣列定義時,可以不按照陣列下標的先後順序進行操作,也不必對數
組中的每乙個元素都賦值。
( 3)如果需要修改陣列中某個元素的值,可以使用陣列定義中的第二種方法:
#使用重新定義的方法修改陣列元素的值
# array[1]=2
# array[2]=3
陣列的使用
( 1)如果需要引用陣列中的某個元素,可以使用陣列名稱加索引的方式:
#使用 echo 命令顯示陣列 array 中第 3 個元素的值
# echo $
3與其他語言中引用陣列元素不同,在 bash 中需要將陣列元素放入大括號「 {}」內。其
目的是為了避免 bash 將陣列名誤解為乙個變數。
( 2)如果不指定陣列索引,將會顯示陣列中第 1 個元素的值:
#不使用下標時,將預設引用陣列中的第 1 個元素
# echo $array
1( 3)有時可能希望看到陣列中所有元素的值,這樣做的目的可能是為了檢查其值是否有錯誤:
#輸出陣列中所有元素的值
# echo $
1 2 3 4 5
在上面的示例命令中,「 *」表示所有元素下標。
( 4)當陣列中的元素非常多時,可能檢視起來非常不方便。這時可以指定檢視的元素範圍,例如:
#檢視陣列中下標大於等於 2 的所有元素的值
# echo $
3 4 5
( 5)有時需要獲得陣列的長度,即陣列中一共有多少個元素。這時可以使用以下形式:
#顯示陣列中的元素個數
# echo $
5上面這個示例命令輸出的數字 5 表示陣列中有 5 個元素,而非陣列中的元素下標最大值。
利用陣列是實現排序:
清除陣列
不再使用陣列時,應該清除陣列,以**這些陣列占用的系統資源。與變數相同,清
除陣列也使用 unset 命令。
( 1)清除陣列 array 的第 1 個元素:
#使用 unset 命令清除陣列中的第 1 個元素
# unset array[0]
( 2)清除整個陣列:
#使用 unset 命令清除整個陣列並驗證
# unset array
# echo $
Linux的shell程式設計
shell指令碼第一行必須以 bin sh 開頭。對shell來講,所有變數的取值都是乙個字串,shell程式採用 var的形式來引用名為var的變數的值。1.1.1 shell定義的環境變數 shell在開始執行的時候就已經定義了一些和系統的工作環境相關的變數,這些變數使用者還可以重新定義。hom...
Linux的Shell程式設計 Shell基本語法
像高階程式語言一樣,shell也提供說明和使用變數的功能。對shell來講,所有變數的取值都是乙個字串,shell程式採用 var的形式來引用名為var的變數的值。shell基本語法 像高階程式語言一樣,shell也提供說明和使用變數的功能。對shell來講,所有變數的取值都是乙個字串,shell程...
linux中的shell程式設計中的命令替換
編寫如下指令碼進行測試 bin bash index 1 for user in cat etc passwd cut d f 1 doecho this is the index user user index index 1 done其中cut d f 1 中的 d指定分隔符為 f 1 指定分隔...