Bash Script檔案的撰寫;在整個Linux作業系統操作中佔了很重要的一部份。可以在不會寫程式(C語言)的狀況下,利用內建指令及相關語法達到靈活自訂功能地使用作業系統。
雖然一開始入門較不容易,但熟練後卻能利用撰寫好的檔案來執行常用的操作,進而節省大量的時間與記憶需求,又能準確地完成工作。如此好處;花點時間學習何樂而不為呢?
上篇整理基本操作,下篇整理進階使用方法。
(一)Linux指令:Bash指令稿的撰寫以Linux的指令操作為基礎,茲提供相關連結方便使用時查詢。
(二)Vim操作指令:撰寫指令稿時使用的VIM編輯器;其指令要記熟,茲提供相關連結方使用時查詢。
(三)變數的使用:
1.read/echo:讀取/顯示資訊內容(可搭參數使用)
2.$0~9:傳入指令稿(函數)的參數,0=名字。
3.$#:參數個數,$?:函數回傳值。
4.$*:參數實際內容(單一物件),$@:同左(多個物件)。
5.env:環境變數,使用$(大寫)可取其中的值來使用。
6.export:設定,source:生效,unset:刪除。
(四)特殊符號:
1.'':單引號內的內容都變成字串。
2."":雙引號內的內容,除$、``、\等,其餘當字串。
3.``:倒引號將指令執行結果輸出。
4.*:比對任意字元,?:比對單一字元。
5.a[d*f]b:比對字串範例,a[!d?f]b:同左(反向)。
6.a[1-5]b:需連續字串,a{12,23,34}b:明確地比對。
7.|:管線,將前一指令結果輸入到下一指令執行。
8.&:後台執行指令或指令稿,不會影响當前效能。
9.{}:字串中區別出變數,():和倒引號同,;:換行功能。
(五)檔案處理:
1.檔案類型:文字、二進制、目錄、連結、裝置、管線。
2.STDIN=/dev/stdin/=0
3.STDOUT=/dev/stdout/=1
4.STDERR=/dev/stderr/=2
5.<:輸入、>:輸出、>>:追加輸出。
6.2>>err.list(範例1)、&>outerr.list(範例2)。
(六)分支結構:
1.測試方式:test指令、[ ],true回0、false回1要注意。
2.檔案測試參數:-[efdcpSL]、-[nt ot ef]、-[rwxugks]。
3.數字測試參數:-[lt le ne eq ge gt]。
4.字串測試參數:-[nz]、=、!=。
5.邏輯測試參數:-[ao]、!。
6.if的分支測試語法:
if [ ]
elif
then
(expression)
else
(expression)
fi
7.case的分支測試語法:
case 變數 in
pattern1) command;;
pattern2 | pattern3) command;;
*) command;;
esac
8.select的分支測試語法:
select 變數 in 變數清單(可用""括住空白)
do
command
done
(七)循環結構:
1.for的循環結構語法:
for 變數 in 變數清單(可用""括住空白)
do
command
done
2.while的循環結構語法:
while [ ]
do
command
done
3.until的循環結構語法:
until [ ]
do
command
done
(八)函數結構與陣列:
1.函數型式:function fun{ }、fun(){ }共兩種。
2.傳參數方式fun p1 p2 p3傳入,$1、$2、$3方式取出。
3.$#:傳入參數個數,己去掉$0故不用減1。
4.$?:函數回傳值,亦可使用return $val方式。
5.$var='fun'
6.array的使用範例、使用範例2、 使用範例3。
7.array的用法需參考範例,和書中例子有所不同。
(九)撰寫技巧:
1.可使用type判斷指令,並儘量用原生指令。
2.少用|管線,效能會變慢!可用time fun來測時間。
3.少用sed、awk來操作字串,效能會變慢。
4.可用let expression及(( ))來做四則運算。
5.可用"expression" | bc來做浮點數及函數的進階運算。
沒有留言:
張貼留言