shell指令碼學習第三彈-變數的使用
shell指令碼學習第三彈-變數的使用
一、什麼是變數
相信大家聽到變數這個詞語很敏感吧,我們的C語言中也有所謂的變數,變數即在程式執行過程中它的值是允許改變的量。
也可以這麼說,變數的本質是一種鍵值對,舉個例子來說:str=“123456”,“12345”就是鍵值對中的Value,str就是鍵值對中的Key值。
二、shell變數的使用
1.變數名以英文字母或者下劃線開頭,但是不能以數字開頭
2.變數名區分大小寫
3.變數名與等號之間,等號與變數值之間不要有空格
4.只有在使用變數的值的時候,才在變數名之前加
5.如果一行只有一條命令,則每一行不用以分號結尾,每一條命令以換行分隔
6.如果一行有多條命令,則每一條命令以分號分隔,但建議每行只有一條命令
7.當賦值的內容中包含空格,要加引號
三、shell變數的分類
shell變數分為三類,分別為環境級變數,使用者級變數,系統級變數;
(1)環境級變數只在當前shell中生效,shell關閉變數丟失,
(2)使用者級變數只針對當前使用者有效,
(3)系統級變數被寫在系統的配置檔案/etc/profile中
注意: 變數是儲存在程式執行的記憶體中的,所以shell變數不能永久的儲存在系統中。
四、實踐
首先說明:echo是輸出文字
來看一個例子:
1 #!/bin/bash
2
3 var="hello shell"
4
5 echo $var
6 var='123'
7 echo $var
#這個是一個簡化的寫法,原型是 echo ${var}
結果:
hello shell
123
我們再來看一組例子:
1 #!/bin/bash
2
3 var=132
4 echo $var
5 echo "$var"
6 echo '$var'
結果:
132
132
$var
咦,神奇,為什麼會出現這個問題?
很顯然,我們會發現一個是單引號,另外一個是雙引號,單引號的變數替換被禁止掉了;這之間的區別我就得說道說道了。
單引號為強引用,雙引號為弱引用,即弱引用,引用的是變數值,而”即強引用,引用的是變數本身的值。這麼簡明的說法想必大家都懂了吧!!!
兩者的區別在於, ““弱引用不能轉譯 “”,”`”,"!","$"
來看一個例子:
1 #!/bin/bash
2
3 echo "\\"
4 echo '\\'
結果:
\
\\
五、區域性變數
在shell中,區域性變數是要宣告的——local
例子:
1 #!/bin/bash
2
3 b=5
4 fun1()
5 {
6 b=3
7 echo $b
8 }
9
10 fun2()
11 {
12 local b=1
13 echo $b
14 }
15 echo $b
16 fun1
17 echo $b
18 fun2
19 echo $b
結果:
5
3
3
1
3
由此可見,區域性變數不會影響全域性變數。
六、刪除變數
通常我們刪除變數是用unset函式,比如
1 #!/bin/bash
2
3 var="hello shell"
4 unset var
5 echo $var
我們會發現結果是空,成功刪除了var環境變數。