目錄
一、Shell編程基礎
1.1 變量
1.1.1 變量定義
= 左右不
要有空格- 如果內容有空格,需要使用
單引號
或雙引號
- 雙引號支持轉義符,
$ 開頭的變量會被自動替換
1.1.2 預定義變量
PWD
:當前目錄USER
:當前用戶HOME
:當前用戶主目錄,還可以用~
簡寫PATH
:當前所有可執行程序RANDOM
:產生一個隨機數
1.1.3 特殊符號
{1..10}
:等價於 seq 1 10,表示 1~10 數字seq 1 3 10
:表示生成一個步進爲 3 的 1~10 的數((a=a+3))
:整數擴展,雙括號裏面的變量作爲整數處理
1.1.4 變量類型
- Shell中不區分變量類型的,這一點和Python很像,
所有的變量
都是基礎類型
,只是在運行的時候做動態解析
。其中字符串
、數字
、布爾
是常用的。 - 布爾的基本表示表現形式是
true
和false
。
1.1.5 內置判斷
- 判斷主要包括
算數判斷
,與
或非
的邏輯判斷,還有一些 Shell 中內置的判斷
三個方面。下面爲常用的一些內置判斷 -e file
:表示如果文件存在,則結果爲真;-d file
:表示如果文件是一個子目錄,則結果爲真;-f file
:表示如果文件是一個普通文件,則結果爲真-r file
:表示如果文件可讀,則結果爲真;-s file
:表示如果文件的長度不爲 0,則結果爲真;-w file
:表示如果文件可寫,則結果爲真;-x file
:表示如果文件可執行,則結果爲真。
1.2 邏輯控制
1.2.1 條件判斷 if
- 首先看下 if 條件判斷,if 首先檢測判斷條件是否成立,如果成立則執行 then 語句塊內的邏輯,else 執行判斷不成立的邏輯,還有 elif…if…,它類似於 Python,當條件都不滿足時去判斷下一個條件。
1.2.2 for循環
- 第一種實現方式:
for((i=0;i<10;i++))
- 第二種實現方式:
for...in...語句塊
1.2.3 while循環
- while 首先判斷條件,條件成立則在 do 語句塊中執行操作。
1.2.4 退出循環 break、continue
return
:函數返回exit
:腳本進程退出break
:退出當前循環continue
:跳出當前循環,進入下一次循環
二、編寫Shell腳本實戰
2.1、註釋
- ·註釋以
#
開頭,用於增加腳本可讀性。shell腳本以.sh
結尾。可以使用vim
命令創建一個shell腳本。
2.2、參數
當腳本開始執行的時候,會按照制定規則去解析語句。當傳遞一個參數給腳本時,它是怎麼被解析的?
$0
:表示被執行的程序
,也就是當前腳本
$1
、$2
分別表示傳遞的第 1 個
和第 2 個
參數,Shell 默認只支持9
個參數,如果你需要支持更多的參數可以使用 shift$@
、$*
表示所有的參數
,但不包含 $0
2.3、函數
函數
:函數是以函數名()
跟{}
括起來的內容組成。函數可以實現一些功能封裝,同時函數也支持與腳本類似的參數解析邏輯。