摘要
筆者在文中分享如何進行 Bash 腳本編程,既是經驗的回顧,也希望能夠幫助到更多學習編程的朋友。文中提到的一些代碼,可能有多種表現形式,筆者選擇更符合編碼規範的方式進行呈現。如果想要使用其他的開式,可以參考其他的文章。
1 概要
Bash 是Unix Shell的一種,它的名字是一系列縮寫:Bourne-AgainSHell — 這是關於Bourne shell(sh)的一個雙關語(Bourne again/ born again)。
可以參考 Bash 介紹。
2 Bash 編程
Bash是解釋型語言,每次執行的時候,都需要通過解釋器解釋成機器執行的語言。因此我們需要在腳本文件的第一行指定解釋器。
#! /usr/bin/env bash
2.1 變量
Bash中的變量是忽略數據類型的。在定義的時候無需指定數據類型,然後在使用的時候自動轉換。
2.1.1 變量定義
varDecimal=100 varString="str" varStringWithBlank="prefix content postfix" varFromVar1="This is number ${varDecimal}" varFromVar2="number${varDecimal}"
執行過程中,varFromVar1的值爲"This is number 100",varFromVar2的值爲 "number100"。
變量名需要滿足這些條件:
- 由字母、數字和下劃線組成
- 不能以數字開頭
- 區分大小寫
- 不能使用Shell的關鍵字
2.1.2 變量使用
變量使用的時候,需要用到
${}
比如:
echo ${VAR}
2.2 函數
2.2.1 函數定義
函數定義時,可以使用關鍵字 function 進行修飾,也可以省略。與高級語言不同,函數中參數傳遞時,不需要進行特別申明,可以直接使用 $n 進行引用。
function printInfo() { ret=1 .... return ret }
2.2.2 函數使用
函數調用的方式如同執行一般的命令一樣。採用 函數名 + 參數列表的方式,直接調用。如:
printInfo "User"
3 運行與調試
腳本執行的幾種形式:
$ chmod +x tt.sh && ./tt.sh # 爲腳本添加執行權限後,直接引用 $ source tt.sh # 使用source命令執行,tt.sh不需要擁有執行權限 $ bash tt.sh # 使用解釋器來執行,tt.sh不需要擁有執行權限