shell編程基礎(chǔ)知識(shí)小結(jié)
1、文件類型介紹
linux系統(tǒng)中主要包括以下七種文件類型: d 目錄 - 普通文件 l 符號(hào)鏈接 s 套接字文件 b 塊設(shè)備文件 c 字符設(shè)備文件 p 命名管道文件
2、正則表達(dá)式
正則表達(dá)式在shell編程中非常重要。
從一個(gè)文件或命令輸出中抽取或過(guò)濾文本時(shí)??墒褂谜齽t表達(dá)式(RE),正則表達(dá)式是一些特殊或不很特殊的字符串模式的集合。
基本的元字符集:
^ 只匹配行首。
$ 只匹配行尾。
* 一個(gè)單字符后緊跟*,匹配0個(gè)或多個(gè)此單字符。
[] 匹配[]內(nèi)字符,可以是一個(gè)單字符,也可以是字符序列??梢允褂?來(lái)表示[]內(nèi)范圍,如[1-5]等價(jià)于[1,2,3,4,5]。
屏蔽一個(gè)元字符的特殊含義,如$表示字符$,而不表示匹配行尾。
. 匹配任意單字符。
pattern{n} 匹配pattern出現(xiàn)的次數(shù)n
pattern{n,}m匹配pattern出現(xiàn)的次數(shù),但表示次數(shù)最少為n
pattern{n,m} 匹配pattern出現(xiàn)的次數(shù)在n與m之間(n,m為0-255)
常見(jiàn)例子:
顯示可執(zhí)行的文件:ls –l | grep …x...x..x
只顯示文件夾:ls –l | grep ^d
匹配所有的空行:^$
匹配所有的單詞:[A-Z a-z]*
匹配任一非字母型字符:[^A-Z a-z]
包含八個(gè)字符的行:^……..$(8個(gè).)
更多內(nèi)容,請(qǐng)查閱正則表達(dá)式的詳細(xì)資料加深學(xué)習(xí)。
3、字符類描述
常用的可用字符類列表:
[:alnum:] 字母數(shù)字 [a-z A-Z 0-9]
[:alpha:] 字母 [a-z A-Z]
[:blank:] 空格或制表鍵
[:cntrl:] 任何控制字符
[:digit:] 數(shù)字 [0-9]
[:graph:] 任何可視字符(無(wú)空格)
[:lower:] 小寫(xiě) [a-z]
[:print:] 非控制字符
[:punct:] 標(biāo)點(diǎn)字符
[:space:] 空格
[:upper:] 大寫(xiě) [A-Z]
[:xdigit:] 十六進(jìn)制數(shù)字 [0-9 a-f A-F]
使用字符類可以更好地適應(yīng)非英語(yǔ) locale(包括某些必需的重音字符等)。
4、引號(hào)類型
shell中共有四種引用類型:
“ ”雙引號(hào)
‘ '單引號(hào)
` ` 反引號(hào)
反斜線
說(shuō)明:
“ ”可引用除$、` 、 、外的任意字符或字符串,“ ”中的變量能夠正常顯示變量值。
‘ '與“ ”類似,不同在于shell會(huì)忽略任何的引用值。
例如: GIRL=‘girl'
echo “The ‘$GIRL' did well”
則打?。篢he ‘girl' did well
說(shuō)明:
` `用于設(shè)置系統(tǒng)命令的輸出到變量,shell會(huì)將` `中的內(nèi)容作為一個(gè)系統(tǒng)命令并執(zhí)行質(zhì)。
例如:echo `date` 則打印當(dāng)前的系統(tǒng)時(shí)間。
說(shuō)明:
用來(lái)屏蔽特殊含義的字符:& * + ^ $ ` “ | ?
例如:expr 12 * 12 將輸出144
5、變量設(shè)置的幾種模式
變量設(shè)置時(shí)的不同模式:
valiable_name=value 設(shè)置實(shí)際值到 variable_name中
valiable_name+value 如果設(shè)置了variable_name,則重設(shè)其值
valiable_name:?value 如果未設(shè)置variable_name,則先顯示未定義用戶錯(cuò)誤信息
valiable_name?value 如果未設(shè)置variable_name,則顯示系統(tǒng)錯(cuò)誤信息
valiable_name:=value 如果未設(shè)置variable_name,則設(shè)置其值
valiable_name-value 同上,但取值并不設(shè)置到variable_name
注:以上幾種模式的靈活應(yīng)用,將在很大程度上提升編程技巧。
6、條件測(cè)試
test命令用于測(cè)試字符串、文件狀態(tài)和數(shù)字,expr測(cè)試和執(zhí)行數(shù)值輸出。
Test格式:test condition 或 [ condition ](需要特別注意的是condition的兩邊都要有一個(gè)空格,否則會(huì)報(bào)錯(cuò)),test命令返回0表示成功。
下面將分別描述test的三種測(cè)試:
文件狀態(tài)測(cè)試(常用的)
-d 測(cè)試是否文件夾
-f 測(cè)試是否一般文件
-L 測(cè)試是否鏈接文件
-r 測(cè)試文件是否可讀
-w 測(cè)試文件是否可寫(xiě)
-x 測(cè)試文件是否可執(zhí)行
-s 測(cè)試文件是否非空
1、字符串測(cè)試
五種格式: test “string”
test string_operator “string”
test “string” string_operator “string”
[ string_operator “string” ]
[ “string” string_operator “string” ]
其中string_operator可以為:
= 兩字符串相等
!= 兩字符串不等
-z 空串
-n 非空串
2、數(shù)值測(cè)試
兩種格式: “number” number_operator “number”
[ “number” number_operator “number” ]
其中:number_operator 可以為:-eq 、-ne、-gt、-lt、-ge
例如: NUMBER=130
[ “990” –le “995” –a “NUMBER” -gt “133” ]
(其中-a表示前后結(jié)果相“與”)
expr命令一般用于整數(shù)值,但也可以用于字符串。
格式: expr srgument operator operator argument
例如: expr 10 + 10
expr 10 ^ 2 (10的平方)
expr $value + 10
增量計(jì)數(shù)--expr在循環(huán)中最基本的用法
例如: LOOP=0
LOOP=`expr $LOOP + 1`
3、模式匹配:通過(guò)指定的冒號(hào)選項(xiàng)計(jì)算字符串中的字符數(shù)
例如: value=account.doc
expr $value : `(.*).doc`
輸出 account
7、命令執(zhí)行順序
&& 成功執(zhí)行一個(gè)命令后再執(zhí)行下一個(gè)
|| 一個(gè)命令執(zhí)行失敗后再執(zhí)行另一個(gè)命令
( ) 在當(dāng)前shell中執(zhí)行一組命令(格式:(命令1;命令2; ……))
{ } 同( )
例如: comet mouth_end || ( echo “hello” | mail dave ;exit )
如果沒(méi)有( ),則shell將直接執(zhí)行最后一個(gè)命令(exit)
在shell編程中,命令執(zhí)行順序,有時(shí)決定了一個(gè)程序的執(zhí)行結(jié)果,而&&與||應(yīng)用最為廣泛。
8、腳本調(diào)試
腳本調(diào)試
最有用的調(diào)試腳本的工具是echo命令,可以隨時(shí)打印有關(guān)變量或操作的信息,以幫助定位錯(cuò)誤。
也可使用打印最后狀態(tài)($?) 命令來(lái)判斷命令是否成功,這時(shí)要注意的是要在執(zhí)行完要測(cè)試的命令后立即
輸出$?,否則$?將會(huì)改變。
Set命令也可以用來(lái)輔助腳本測(cè)試:
Set –n 讀命令但是不執(zhí)行
Set –v 顯示讀取的所有的行
Set –x 顯示所有的命令及其參數(shù)
要關(guān)閉set選項(xiàng),只要把-換成+就可以了。
- 利用shell編程實(shí)現(xiàn)DOS風(fēng)格的Linux命令行
- Shell編程的一些知識(shí)集合
- shell編程基礎(chǔ) 單引號(hào)和雙引號(hào)的區(qū)別
- 深入淺出Shell編程 Shell變量介紹
- 分享shell編程中的幾個(gè)小技巧
- shift妙用之解決shell編程中的入?yún)?wèn)題
- shell編程基礎(chǔ)之認(rèn)識(shí)與學(xué)習(xí)BASH
- Shell編程之Shell變量學(xué)習(xí)總結(jié)
- shell編程之實(shí)現(xiàn)windows回收站功能分享
- 讓代碼整潔、過(guò)程清晰的BASH Shell編程技巧
- PowerShell編程中的一些命名規(guī)則參考
- Shell編程指南
相關(guān)文章
shell查找符號(hào)鏈接及其指向目標(biāo)的方法介紹
本文為大家介紹一些處理符號(hào)鏈接的實(shí)踐方法,希望對(duì)大家編寫(xiě)shell腳本時(shí)帶來(lái)一些幫助,有需要的朋友不妨參考下2013-02-02linux shell腳本對(duì)未定義變量的判斷以及if的用法詳解
今天小編就為大家分享一篇linux shell腳本對(duì)未定義變量的判斷以及if的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Shell中case...in分支語(yǔ)句的應(yīng)用
shell作為一種腳本編程語(yǔ)言,同樣包含循環(huán)、分支等其他程序控制結(jié)構(gòu),從而輕松完成更加復(fù)雜、強(qiáng)大的功能,本文主要介紹了Shell中case...in分支語(yǔ)句的應(yīng)用,感興趣的可以了解一下2023-08-08real server 的一個(gè)啟動(dòng)腳本例子(推薦)
下面小編就為大家?guī)?lái)一篇real server 的一個(gè)啟動(dòng)腳本例子(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03Linux下實(shí)現(xiàn)SNMP一鍵安裝的Shell腳本
這篇文章主要介紹了Linux下實(shí)現(xiàn)SNMP一鍵安裝的Shell腳本,非常實(shí)用,需要的朋友可以參考下2014-07-07shell腳本函數(shù):控制顏色、定位、居中顯示的代碼
這篇文章主要介紹了shell腳本函數(shù):控制顏色、定位、居中顯示的代碼,需要的朋友可以參考下2014-04-04用expect實(shí)現(xiàn)ssh自動(dòng)登錄服務(wù)器并進(jìn)行批量管理的實(shí)現(xiàn)方法
這篇文章主要介紹用expect實(shí)現(xiàn)ssh自動(dòng)登錄服務(wù)器并進(jìn)行批量管理的實(shí)現(xiàn)方法,需要的朋友可以參考下2013-02-02shell周期差量備份文件夾的實(shí)現(xiàn)代碼
這篇文章主要介紹了shell周期差量備份文件夾的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12