標籤:style blog http ar color 使用 sp for strong
Bash shell指令碼編程知識點如下(初學,不全,歡迎討論補充):
shell簡介
指令碼的簡單介紹
變數和引用
算術運算
互動式編程
選擇判斷
條件測試
迴圈
函數
shell簡介
shell是一種具備特殊功能的程式,提供了使用者與核心進行互動操作的一種介面,它接收使用者輸入的命令,並把它送入核心去執行,shell分為圖形介面和命令介面(我們操作的window系統就是一種圖形化shell,我們要學的bash也是she一種命令介面的shell)。
shell與核心和使用者的關係圖如下:
bash shell功能:
提供互動式介面:
命令列展開:~,{}
命令別名:slias,unalias
命令:history
globbing:*,?,[],[^]
快速鍵
命令補全:$PATH
命令hash
路徑補全
提供編程環境:面向過程,指令碼編程
程式:語句和運算式
流程:
順序執行
選擇執行
迴圈執行
編程模型:面向過程,物件導向
程式=指令+資料
面向過程:以指令為中心組織資料。bash shell就是一種面向過程的編程
物件導向:以資料為中心組織指令。
程式運行模型:
編譯運行:
來源程式 --> 預先處理 --> 編譯 --> 彙編 --> 連結
解釋運行:bash就是解釋啟動並執行
解譯器 /bin/bash
來源程式
指令碼的第一行:shebang
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
指令碼的簡單介紹
指令碼語言的好處就是簡單、易學、易用,適合處理檔案和目錄之類的對象,以簡單的方式快速完成某些複雜的事情。它適用於系統管理、文本處理等方面完成特定功能的小程式。
- 書寫格式;shell指令碼格式如下:
#!/bin/bash 必須頂格寫,指明解譯器類型。除了第一行#!指明解譯器類型之外,所有的#帶頭的shell都會認為是注釋,不予執行。
- 執行與檢測
-n 文法測試,測試是否有語法錯誤,剛學shell建議執行前使用-n測試一下,保證文法是否錯誤。
-x 類比執行,可以顯示該指令碼執行中的每個步驟。方便尋找錯誤。
帶加號的是執行的步驟,不加-x不會顯示帶加號的行。
變數和引用:
變數是命名的地址空間,記憶體是編址的儲存單元:
變數用於儲存有用資訊,如路徑名、檔案名稱、數字等,Linux使用者使用變數定製其工作環境,使系統獲知使用者相關的配置。變數本質上是儲存的一個或多個電腦記憶體位址。
變數類型:
本地變數:只對當前shell進程有效,對當前shell之外的其他shell(包括其父、子等)無效。而且隨著shell進程的消亡而無效。
局部變數:僅對當前shell進程中的某段代碼空間內有效;通常用於函數本地程式。
環境變數:對當前shell進程及其子shell進程有效;
位置參數變數:$1,$2 ...........
特殊變數:$?,$0,$#,$$,$*,[email protected]
變數賦值與引用:
本地變數:無需事先聲明可直接使用;例如你家的東西直接拿來使用,而別人的東西你要說下才能使用一樣。
變數賦值:[set] VAR_NAME=VALUE set是可以省略的,直接變數名=變數值 賦值完成。
變數引用:${VAR_NAME}或$VAR_NAME {} 花括弧是可省略的,在變數後面跟著不是變數名的時候需要使用
直接賦值直接使用。花括弧這時候是可省略的
" ":弱引用,其中的變數會被替換,大部分字元都看作一般字元。例外還有\ $ `三個特殊字元可以使用,無需轉義。
‘ ‘:強引用,任何字元都看作一般字元,除單引號自身。所以無法在兩個單引號之間包含單引號,用\轉義也不行。
· · :命令引用:鍵盤TAB鍵上面字元,引用命令的。
強引用與弱引用的結果是不一樣的
set:顯示所有本地變數。
unset VAR_NAME:銷毀一個變數。
環境變數:
變數賦值:
export VAR_NAME=VALUE
declare –x VAR_NAME=VALUE
export VAR_NAME:可以將本地變數賦值為環境變數,前提是本地變數必須存在。也不能加$符號
declare –x VAR_NAME:同上。
本地變數到環境變數轉換。
變數引用:${VAR_NAME}或$VARNAME 同本地變數引用。花括弧也可以省略。
注意:bash內建了許多環境變數
HISTSIZE,HISTFILE,HISTCONTROL,PATH,HOME,SHELL
export:顯示所有環境變數;printenv,env 同樣可以顯示
unset VAR_NAME:銷毀環境變數
唯讀變數:
readonly VAR_NAME 將環境變數變為唯讀變數
declare –r VAR_NAME 同上。
位置參數變數:經常在互動式指令碼使用。輸入的第一位元為$1,
變數命令法則:
- 不能帶程式中的關鍵字:if,elif,fil,then,for,…
- 不能使用數字、字母或底線,而且不能以數字開頭;
- 見名知義;一看到變數就知道那個變數的意思。
Bash shell編程的文法知識點(1)