1. 程式人生 > >Shell腳本(學習筆記1)

Shell腳本(學習筆記1)

Shell

shell腳本學習記錄
為什麽學習shell腳本?
在一些復雜的linux維護工作過程中,大量的重復性的輸入和交互操作不但費時費力,而且容易出現錯誤;然而編寫shell腳本程序,可以批量處理、自動化的完成一系列的維護工作,大大減輕管理員的工作負擔。
1、shell腳本的腳本結構?
一個合格的shell腳本程序應當遵循標準的shell腳本結構,而且能夠輸出友好的提示信息,是其更加容易讀懂。對於代碼較多、結構較復雜的腳本需要有必要的文字註釋。如下圖:#/bin/bash表示該腳本用/bin/bash程序執行,第二行為該腳本的提示信息。
技術分享圖片
執行腳本出現如下圖所示的信息
技術分享圖片
2、腳本的重定向
學習重定向不得不學習與其相關的三個交互設備文件
■ 標準輸入:默認的設備是鍵盤,文件編號為0,命令會在標準輸入文件中讀取在執行過程中需要的輸入數據
■ 標準輸出:默認的設備是顯示器,文件編號為1
■ 標準錯誤:默認的設備是顯示器,文件標號為2,是在命令執行中所產生的錯誤信息
重定向操作
■ 重定向輸入(<):從指定的文件讀取數據,而不是從鍵盤輸入
■ 重定向輸出(>):輸出結果保存到指定文件;而(>>)會將結果追加到原有文件後
■ 標準錯誤輸出(2>):將錯誤信息保存到指定文件;(2>>)追加
■ 混合輸出(&>):將標準錯誤、標準輸出同時保存在一個文件中
3、管道操作
管道(|)的作用是將左側命令的結果交由右側命令再次操作。如左側命令是將某文件中的不是以“#”開頭的行過濾出來,右側為統計行數;加一起就是統計某文件中有多少行不是以“#”開頭。
4、變量
shell變量用來存放系統和用戶需要使用的特定參數(值),而且這些參數可以根據用戶的設定或系統環境的變化而相應變化。通過使用變量,shell程序可以提供更加靈活的功能,適應性更強。
常見的shell變量包括自定義變量、環境變量、位置變量、預定義變量。自定義變量:變量的基本格式為“變量=變量值”,等於號兩邊沒有空格。變量名稱需要以下劃線或字母開頭,名稱中不能包括特殊字符。查看和引用變量可以使用“echo”命令。變量賦值的特殊操作包括
技術分享圖片
1)雙引號“””:雙引號主要用於起界定字符的作用
2)單引號“’”:單引號括起來的字符無法引用變量,如“$”會被當做普通字符看待
3)反撇號“`”:主要用於命令替換
技術分享圖片
4)read命令:read可用來提示用戶輸入信息,從而實現簡單的交互過程。執行時將從標準輸入設備讀一行內容,並以空格為分隔,將讀入的各字段賦值給指定的變量。read -p可以輸入提示信息。
技術分享圖片
5、設置變量的作用範圍
默認情況下新定義的變量只在當前的shell環境下生效,如果這時候切換一個子shell,這個變量將無法使用,這個變量被稱為局部變量。而如果想讓一個變量在所有的子shell環境中有效需要將該變量設置為全局變量。export命令可以將局部變量改為全局變量,而且可以直接為變量賦值。也就是說export命令既可以將原有的局部變量改為全局變量,又可以直接定義一個全局變量。
技術分享圖片
6、數值變量的運算
常用的幾種運算符
■ +:加法運算
■ -:減法運算
■ *:乘法運算
■ /:除法運算
■ %:求模運算
整數值的運算主要通過內部命令expr進行,基本格式如下
expr 變量1 運算符 變量2 [運算符 變量3]...
7、環境變量
環境變量指的是出於運行需要而由linux系統提前創建的一類變量,主要用於設置用戶的工作環境,包括用戶的宿主目錄、命令查找路徑、用戶當前目錄、登錄終端等。環境變量由linux系統自動維護,會隨著用戶狀態的變化而變化。使用“env”命令可以查看到當前工作環境下的環境變量;環境變量的全局配置文件為“/etc/profile”,而且每個用戶都有自身的獨立配置文件“~/.bash_profile”。
技術分享圖片
技術分享圖片
8、位置變量
為了在使用shell腳本時,方便通過命令行為程序提供操作參數,bash引入了位置變量的概念。當執行命令操作的時候,第一個字段表示命令字或腳本程序名,其余字符串參數按照從左到右依次復制給位置變量。
技術分享圖片
技術分享圖片
技術分享圖片
9、預定義變量
預定義變量是由bash預先定義好的變量,用戶可以使用,但無法增加,無法為其賦值。預定義變量由“$”和其他符號組成。下面有幾個常見的預定義變量:
■ $#:表示命令中位置參數的個數
■ $*:表示所有位置參數的內容
■ $?:表示前一條命令執行後的返回狀態
■ $0:表示當前執行命令或腳本的名稱
技術分享圖片
技術分享圖片

Shell腳本(學習筆記1)