Shell脚本(学习笔记1)
shell腳本學(xué)習(xí)記錄
為什么學(xué)習(xí)shell腳本?
在一些復(fù)雜的linux維護工作過程中,大量的重復(fù)性的輸入和交互操作不但費時費力,而且容易出現(xiàn)錯誤;然而編寫shell腳本程序,可以批量處理、自動化的完成一系列的維護工作,大大減輕管理員的工作負(fù)擔(dān)。
1、shell腳本的腳本結(jié)構(gòu)?
一個合格的shell腳本程序應(yīng)當(dāng)遵循標(biāo)準(zhǔn)的shell腳本結(jié)構(gòu),而且能夠輸出友好的提示信息,是其更加容易讀懂。對于代碼較多、結(jié)構(gòu)較復(fù)雜的腳本需要有必要的文字注釋。如下圖:#/bin/bash表示該腳本用/bin/bash程序執(zhí)行,第二行為該腳本的提示信息。
執(zhí)行腳本出現(xiàn)如下圖所示的信息
2、腳本的重定向
學(xué)習(xí)重定向不得不學(xué)習(xí)與其相關(guān)的三個交互設(shè)備文件
■ 標(biāo)準(zhǔn)輸入:默認(rèn)的設(shè)備是鍵盤,文件編號為0,命令會在標(biāo)準(zhǔn)輸入文件中讀取在執(zhí)行過程中需要的輸入數(shù)據(jù)
■ 標(biāo)準(zhǔn)輸出:默認(rèn)的設(shè)備是顯示器,文件編號為1
■ 標(biāo)準(zhǔn)錯誤:默認(rèn)的設(shè)備是顯示器,文件標(biāo)號為2,是在命令執(zhí)行中所產(chǎn)生的錯誤信息
重定向操作
■ 重定向輸入(<):從指定的文件讀取數(shù)據(jù),而不是從鍵盤輸入
■ 重定向輸出(>):輸出結(jié)果保存到指定文件;而(>>)會將結(jié)果追加到原有文件后
■ 標(biāo)準(zhǔn)錯誤輸出(2>):將錯誤信息保存到指定文件;(2>>)追加
■ 混合輸出(&>):將標(biāo)準(zhǔn)錯誤、標(biāo)準(zhǔn)輸出同時保存在一個文件中
3、管道操作
管道(|)的作用是將左側(cè)命令的結(jié)果交由右側(cè)命令再次操作。如左側(cè)命令是將某文件中的不是以“#”開頭的行過濾出來,右側(cè)為統(tǒng)計行數(shù);加一起就是統(tǒng)計某文件中有多少行不是以“#”開頭。
4、變量
shell變量用來存放系統(tǒng)和用戶需要使用的特定參數(shù)(值),而且這些參數(shù)可以根據(jù)用戶的設(shè)定或系統(tǒng)環(huán)境的變化而相應(yīng)變化。通過使用變量,shell程序可以提供更加靈活的功能,適應(yīng)性更強。
常見的shell變量包括自定義變量、環(huán)境變量、位置變量、預(yù)定義變量。自定義變量:變量的基本格式為“變量=變量值”,等于號兩邊沒有空格。變量名稱需要以下劃線或字母開頭,名稱中不能包括特殊字符。查看和引用變量可以使用“echo”命令。變量賦值的特殊操作包括
1)雙引號“””:雙引號主要用于起界定字符的作用
2)單引號“’”:單引號括起來的字符無法引用變量,如“$”會被當(dāng)做普通字符看待
3)反撇號“`”:主要用于命令替換
4)read命令:read可用來提示用戶輸入信息,從而實現(xiàn)簡單的交互過程。執(zhí)行時將從標(biāo)準(zhǔn)輸入設(shè)備讀一行內(nèi)容,并以空格為分隔,將讀入的各字段賦值給指定的變量。read -p可以輸入提示信息。
5、設(shè)置變量的作用范圍
默認(rèn)情況下新定義的變量只在當(dāng)前的shell環(huán)境下生效,如果這時候切換一個子shell,這個變量將無法使用,這個變量被稱為局部變量。而如果想讓一個變量在所有的子shell環(huán)境中有效需要將該變量設(shè)置為全局變量。export命令可以將局部變量改為全局變量,而且可以直接為變量賦值。也就是說export命令既可以將原有的局部變量改為全局變量,又可以直接定義一個全局變量。
6、數(shù)值變量的運算
常用的幾種運算符
■ +:加法運算
■ -:減法運算
■ *:乘法運算
■ /:除法運算
■ %:求模運算
整數(shù)值的運算主要通過內(nèi)部命令expr進行,基本格式如下
expr 變量1 運算符 變量2 [運算符 變量3]...
7、環(huán)境變量
環(huán)境變量指的是出于運行需要而由linux系統(tǒng)提前創(chuàng)建的一類變量,主要用于設(shè)置用戶的工作環(huán)境,包括用戶的宿主目錄、命令查找路徑、用戶當(dāng)前目錄、登錄終端等。環(huán)境變量由linux系統(tǒng)自動維護,會隨著用戶狀態(tài)的變化而變化。使用“env”命令可以查看到當(dāng)前工作環(huán)境下的環(huán)境變量;環(huán)境變量的全局配置文件為“/etc/profile”,而且每個用戶都有自身的獨立配置文件“~/.bash_profile”。
8、位置變量
為了在使用shell腳本時,方便通過命令行為程序提供操作參數(shù),bash引入了位置變量的概念。當(dāng)執(zhí)行命令操作的時候,第一個字段表示命令字或腳本程序名,其余字符串參數(shù)按照從左到右依次復(fù)制給位置變量。
9、預(yù)定義變量
預(yù)定義變量是由bash預(yù)先定義好的變量,用戶可以使用,但無法增加,無法為其賦值。預(yù)定義變量由“$”和其他符號組成。下面有幾個常見的預(yù)定義變量:
■ $#:表示命令中位置參數(shù)的個數(shù)
■ $*:表示所有位置參數(shù)的內(nèi)容
■ $?:表示前一條命令執(zhí)行后的返回狀態(tài)
■ $0:表示當(dāng)前執(zhí)行命令或腳本的名稱
轉(zhuǎn)載于:https://blog.51cto.com/13434336/2086794
總結(jié)
以上是生活随笔為你收集整理的Shell脚本(学习笔记1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle之 变更OS时间对数据库的影
- 下一篇: SQL Server Cast、Conv