06_01_bash腳本編程之四 整數(shù)測(cè)試及特殊變量
文件測(cè)試(單目測(cè)試):
-e file:?? 文件是否存在;
-f ?file:? ?測(cè)試文件是否為普通文件
-d ?file:??測(cè)試路徑是否為目錄;
-r ?file: ? 測(cè)試文件對(duì)當(dāng)前用戶而言是否可讀;
-w ?file: 測(cè)試文件對(duì)當(dāng)前用戶而言是否可寫粘勒;
-x ?file :測(cè)試文件對(duì)當(dāng)前用戶而言是否可執(zhí)行;
圓整:linux中默認(rèn)丟棄小數(shù)點(diǎn)后的內(nèi)容
bash命令:
bash -n ?腳本:測(cè)試腳本是否有語法錯(cuò)誤涯肩;
bash -x ?腳本:?jiǎn)尾綀?zhí)行腳本,每一步的過程都顯示出來承粤;
多分支if語句:
if ? 判斷條件1择葡;then
? ? statement1
? ? ...
elif ? ?判斷條件2;then
? ? statement2
? ? ...
elif ? ?判斷條件3;then
? ? statement3
? ? ...
else
? ? statement4
? ??...
fi
腳本退出命令:
exit ?n:退出腳本的命令肴茄,n為數(shù)字纯丸,0為正確偏形,1-255為錯(cuò)誤,執(zhí)行狀態(tài)結(jié)果不自定義觉鼻,則以至exit處為止退出俊扭;例如測(cè)試文件是什么文件,如果不存在坠陈,直接退出腳本不執(zhí)行:
注:如果腳本沒有明確定義退出狀態(tài)碼萨惑,那么,最后執(zhí)行的一條命令的退出碼即為腳本退出狀態(tài)碼
bash變量類型:
本地變量
環(huán)境變量
位置變量
特殊變量:
$?(獲得命令的執(zhí)行狀態(tài)結(jié)果)仇矾,
$#(顯示參數(shù)個(gè)數(shù))庸蔼,
$*(參數(shù)列表),
$@
shift(輪替若未,后一個(gè)參數(shù)替換一個(gè)參數(shù))
06_02_sed命令
sed基本用法(Stream EDitor):
sed中有模式空間的概念朱嘴,指定處理哪些行,現(xiàn)將其放入模式空間中粗合,默認(rèn)不編輯源文件,僅對(duì)模式空間中的數(shù)據(jù)做處理乌昔,處理完后將模式空間打印出來隙疚,也就是處理結(jié)果和模式空間的內(nèi)容各打一份,
用法格式:
sed ?options ?'AddressCommand' ?file: 選項(xiàng) ? 位置+命令 ?文件路徑
options:
-n:靜默模式磕道,不再顯示模式空間中的內(nèi)容供屉,sed默認(rèn)除了打印一遍處理結(jié)果,還會(huì)顯示一遍模式空間溺蕉;
-i:直接修改原文件伶丐;
-e:可同時(shí)執(zhí)行多個(gè)腳本,一次-e代表一次AddressCommand操作疯特;
-f:制定一個(gè)文件哗魂,來作為AddressCommand執(zhí)行腳本;
-r:使用擴(kuò)展正則表達(dá)式漓雅;
Address:
1录别、startline朽色,endline,匹配起始行開始组题,到結(jié)束行結(jié)束葫男;$表示最后一行
2、/模式(正則)/崔列,匹配符合模式的行梢褐;
3、/pattern1/,/pattern2/赵讯,從第一次被模式一匹配到的行到匹配到模式二的行結(jié)束盈咳;
4、lineNumber瘦癌,指定匹配行猪贪;
5、startline讯私,+N:匹配從指定行開始热押,向后的N行,不指定即為全文斤寇;
Command:
d:刪除符合條件的行桶癣,例如刪去匹配到的1和2行,顯示剩下的:
p:顯示符合條件的行
a ? \string:在指定的行后面追加新行娘锁,內(nèi)容為“string”
i ? ?\string:在指定的行前面追加新行牙寞,內(nèi)容為“string”
r ? ?file:將指定的文件的內(nèi)容添加至符合條件的行處;
w ? file:將指定的文件的內(nèi)容另存至指定的文件中莫秆;
s/pattern/string/修飾符:查找并替換间雀,也可寫為s#pattern#string#修飾符,或s@pattern@string@修飾符镊屎,被pattern匹配到的字符串替換為string惹挟,默認(rèn)只替換每行中第一次被模式匹配到的字符串;
? ? 修飾符:g(全局替換)
? ? ? ? ? ? ? ? ? ?i(忽略字符大小寫)
例如替換/etc/inittab文件中id:3:initdefault:數(shù)字3換為5: