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è)試腳本是否有語(yǔ)法錯(cuò)誤;
bash -x ?腳本:?jiǎn)尾綀?zhí)行腳本,每一步的過(guò)程都顯示出來(lái);
多分支if語(yǔ)句:
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í)行:

注:如果腳本沒(méi)有明確定義退出狀態(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ù)做處理,處理完后將模式空間打印出來(lái),也就是處理結(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è)文件,來(lái)作為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:
