之前一直沒有系統的學習過編程,這次在馬哥培訓,希望花更多的時間和精力在Shell腳本上,總體計劃是根據Shell學習的進度不段的更新,把更多的總結和學習進階體會和進步分享給大家,也對自已是一個鞭策。
腳本,英文script,原意是劇本,在shell中,本質上就是各種Linux命令的堆砌,按實際的需求,結合命令控制流程和條件判斷,本質上,腳本可以提高工作效率,按照王老師所說,在Linux里命令操作,最大可接受的重復次數是2次,超過2次都應該考慮用腳本來代替手工的重復性工作。Shell腳本的主要用途有
- 自動化常用命令
- 執行系統管理和故障排除
- 創建簡單的應用程序
- 處理文本或文件
在進一步學習腳本之前,我們必須對變量這一概念有明確的了解。變量即命名的內存空間,變量類型確定了數據的存儲格式和長度,主要分為字符,數值,日期,布爾等,shell默認變量類型為字符類型,除非作事先的申明,如給變量A賦值10就是字符類型
[root@CentOS6 script]# A=10
[root@CentOS6 script]# echo $A
10
如果要明確變量是整數10,就必須declare -i B=10。
一、變量類型
變量的類型決定了存儲空間的不同,如同樣是上述的字符串變量A和整數B的值都是10,字符10要占用2byte,因為在ASCCI中,每個字符占1byte即8bit,而對于變量B來說,十進制數字10轉換為進進制是1010,只需要4bit,但是計算機中最小存儲單元是1byte,所以變量B占用2byte的空間。
日期型的變量占用存儲空間的差別會更大,如果用ASCII來存儲日期2013/12/31,不包括分隔符/,需要8byte存儲空間。計算機存儲日期是計算從1970/1/1到指定日期的天數,這樣2^24足夠存儲這樣的天數,即存儲天數只占用3byte空間。
布爾變量可以實現邏輯運算,包括,與、或、異或三種,數值邏輯和電邏輯具有相同之處,如與運算類似電路的串聯,或運算類似電路的并聯,數值邏輯異或相同為假,不同為真,電轉換為磁之后的同極排斥,異極吸引。
二、Bash變量類型
主要分為本地變量,局部變量,環境變量,特殊變量,位置變量。
1.?本地變量
顧名思義,作用域為整個bash進程,賦值語句VARNAME=VALUE
2.?局部變量
作用域為當前代碼段,賦值語句local VARNAME=VALUE
3.?環境變量
作用域為當前shell進程及子進程,賦值語句export VARNAME=VALUE。腳本在執行時會啟動子shell進程,命令行中啟動的腳本會繼承當前shell的環境變量。注意:系統自動執行的腳本(非命令行啟動)需要自我定義需要的各環境變量
4.?特殊變量
$?變量表示命令執行的狀態結果0表示正確執行,1-255表示錯誤執行,其中1,2,127為系統預留的錯誤執行狀態結果。
$0表示位置變量中的腳本本身
$*傳遞給腳本的所有參數,全部參數合為一個字符串(需要結合雙引號””)
$@傳遞給腳本的所有參數,每個參數為獨立字符串(需要結合雙引號””)
$#表示腳本參數個數
$$表示當前運行bash的進程PID
5.?位置變量
$1,$2,$……表示在腳本代碼中調用通過命令行傳遞給它的參數
三、變量賦值、查看及撤銷
1.?變量賦值
普通變量賦值用=,如VARNAME=VALUE
環境變量賦值:export VARNAME=VALUE?或declare -x VARNAME=VALUE
一個變量賦多個值:ANIMALS=pig;animals=$ANIMALS:goat
環境變量賦多個值:export PATH=/usr/local/mysql:$PATH
2.?變量引用
$name ${name}
3.?顯示變量
顯示普通變量echo $VARNAME
顯示所有環境變量:evn,printenv,export, declare -x
4.?刪除變量
unset VARNAME
注意:但凡操作變量本身而不是變量的值就不需要加$
?
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96904