Shell腳本進階一

隨著課程的進度,對shell腳本進行進行全面的總結

之前一直沒有系統的學習過編程,這次在馬哥培訓,希望花更多的時間和精力在Shell腳本上,總體計劃是根據Shell學習的進度不段的更新,把更多的總結和學習進階體會和進步分享給大家,也對自已是一個鞭策。

腳本,英文script,原意是劇本,在shell中,本質上就是各種Linux命令的堆砌,按實際的需求,結合命令控制流程和條件判斷,本質上,腳本可以提高工作效率,按照王老師所說,在Linux里命令操作,最大可接受的重復次數是2次,超過2次都應該考慮用腳本來代替手工的重復性工作。Shell腳本的主要用途有

  1. 自動化常用命令
  2. 執行系統管理和故障排除
  3. 創建簡單的應用程序
  4. 處理文本或文件

在進一步學習腳本之前,我們必須對變量這一概念有明確的了解。變量即命名的內存空間,變量類型確定了數據的存儲格式和長度,主要分為字符,數值,日期,布爾等,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

(0)
Evan LiangEvan Liang
上一篇 2018-04-23
下一篇 2018-04-23

相關推薦

欧美性久久久久