shell 腳本是利用 shell 的功能所寫的一個【程序(program)】,這個程序是使用純文本文件,並一些shell 的語法與命令(含外部命令)寫在裏面,搭配正則表達式、管道命令與數據流重定向等功能,以達到咱們所想要的處理目的正則表達式
shell 腳本用在系統管理上面是很好的一項工具,但 是用在處理大量數值運算上,就不夠好了,由於shell 腳本的速度較慢,且使用的 CPU 資源較多 會形成主機資源的分配不良。shell
在 shell 腳本的文件中,命令是從上而下、從左而右地分析與執行。bash
shell 腳本的執行,至少須要有r的權限;若須要直接執行命令,則須要擁有r與x的權限。ide
絕對路徑:使用/home/ljc/shell.sh來執行命令;工具
相對路徑:假設工做目錄在/home/ljc/,則使用./shell.sh來執行debug
以bash程序來執行:經過【bash shell.sh】或【sh shell.sh】來執行3d
編寫腳本blog
良好的程序編寫習慣中,第一行要聲明 shell(#/bin/bash),第二行起聲明程序的用途、版本做者等信息。在腳本的文件頭處記錄好:ip
腳本的功能;資源
腳本的版本信息
腳本的做者與聯絡方式腳本的版權聲明方式
腳本的 History(歷史記錄);腳本內較特殊的命令
使用【絕對路徑】的方式來執行
腳本運行時須要的環境變量預先聲明與設置。
交互式腳本可用read 命令完成。
要每次執行腳本都有不一樣結果的數據,可以使用date命令利用日期完成。
腳本若以 source 來執行,表明在父程序的 bash 內執行之意。
若須要進行判斷式,可以使用 test 或中括號([])來處理。
在腳本內,$0、$一、$2..$@ 是有特殊意義的。
條件判斷式可以使用 i.then 來判斷,如果固定變量內容的狀況下,可以使用 case $var in...esac來處理。
循環主要分爲不定循環(while 與 unt)以及固定循環(for),配合 do、done 來完成所需任務。
咱們可以使用 sh -x script.sh 來進行程序的 debug。
-n:不要執行腳本,僅查詢語法問題
-v:再執行腳本前,先將腳本文件的內容輸出到屏幕上
-x:將使用到的腳本內容顯示到屏幕上,這是有用的參數