LinuxShell腳本——變數和數據類型 摘要:本文主要學習了Shell腳本中的變數和數據類型。 變數 定義變數的語法 定義變數時,變數名和變數值之間使用“=”分隔,並且等號兩邊不能有空格: 變數名規則 變數名的定義必須遵循以下規則: 使用變數 使用一個定義過的變數,只要在變數名前面加美元符號即可 ...
LinuxShell腳本——變數和數據類型
摘要:本文主要學習了Shell腳本中的變數和數據類型。
變數
定義變數的語法
定義變數時,變數名和變數值之間使用“=”分隔,並且等號兩邊不能有空格:
1 變數名=變數值
變數名規則
變數名的定義必須遵循以下規則:
1 命名只能使用英文字母,數字和下劃線,首個字元不能以數字開頭。 2 中間不能有空格,可以使用下劃線。 3 不能使用標點符號。 4 不能使用bash里的關鍵字。
使用變數
使用一個定義過的變數,只要在變數名前面加美元符號即可,建議將變數名使用 {} 括起來之後再添加美元符號:
1 echo ${name}
修改變數為只讀
使用readonly命令可以將變數定義為只讀變數,只讀變數的值不能被改變,也不能被刪除:
1 readonly name
刪除變數
使用unset命令可以刪除變數,但不能刪除只讀變數:
1 unset name
位置參數
運行Shell腳本文件時我們可以給它傳遞一些參數,這些參數在腳本文件內部可以使用 $n 的形式來接收。例如: $1 表示第一個參數, $2 表示第二個參數,依次類推。
如果參數個數達到或者超過了10個,那麼就得用 ${n} 的形式來接收了,例如: ${10} 、 ${23} 。 {} 的作用是為了幫助解釋器識別參數的邊界,這跟使用變數時加 {} 是一樣的效果。
腳本內容:
1 #!/bin/bash 2 echo "第一個參數 : $1" 3 echo "第二個參數 : $2"
腳本調用:
1 [root@localhost ~]# sh test.sh A B
執行結果:
1 第一個參數 : A 2 第二個參數 : B
特殊變數
除了位置參數以外,Shell中還有一些特殊變數,這些特殊變數描述了傳入參數的某些信息:
1 $0:當前腳本的文件名。 2 $n:n是一個數字,表示第幾個參數。 3 $#:傳遞給腳本或函數的參數個數。 4 $*:傳遞給腳本或函數的所有參數。當被雙引號""包含時,會將所有的參數從整體上看做一份數據,而不是把每個參數都看做一份數據。 5 $@:傳遞給腳本或函數的所有參數。當被雙引號""包含時,仍然將每個參數都看作一份數據,彼此之間是獨立的。。 6 $?:上個命令的退出狀態,或函數的返回值。 7 $$:當前Shell的進程ID。對於Shell腳本,就是這些腳本所在的進程ID。
數據類型
字元串
字元串是shell編程中最常用最有用的數據類型,字元串可以用單引號,也可以用雙引號,也可以不用引號。
建議使用雙引號,因為雙引號里可以有變數和特殊字元,可以按照變數和特殊字元去使用。
聲明字元串類型的變數:
1 name="Sam"
拼接字元串:
1 hello="hello, $name !"
整數型
在Shell中所有的變數預設都是字元串型。也就是說,如果不手工指定變數的類型,那麼所有的數值都是不能進行運算的:
1 [root@localhost ~]# a=1 2 [root@localhost ~]# b=2 3 [root@localhost ~]# c=$a+$b 4 [root@localhost ~]# echo $c 5 1+2
如果想要進行數學運算,可以使用“$((運算式))”或“$[運算式]”方式運算:
1 [root@localhost ~]# echo $(($a+$b)) 2 3 3 [root@localhost ~]# echo $[$a+$b] 4 3
數組
bash支持一維數組(不支持多維數組),並且沒有限定數組的大小。用括弧來表示數組,數組元素用空格符號分割開。定義數組的一般形式為:
數組元素的下標由0開始編號。獲取數組中的元素要利用下標,下標可以是整數或算術表達式,其值應大於或等於0。
聲明數組類型的變數:
1 數組名=(值1 值2 ... 值n)
也可以通過指定下標來聲明:
1 數組名[下標]=值
獲取數組指定下標的值:
1 ${數組名[下標]}
使用“@”符號可以獲取數組中的所有元素:
1 ${數組名[@]}