1、shell script的編寫與執行shell
一、shell script 的編寫中還須要用到下面的注意事項:bash
a、命令的執行是從上到下,從左到右地分析與執行oop
b、命令、參數間的多個空白都會被忽略掉測試
c、空白行也將被忽略掉, 而且[tab]按鍵所得的空白一樣視爲空格鍵調試
d、若是讀取到一個Enter符號(CR),就嘗試開始執行該行(或該串)命令進程
e、至於若是一行的內容太多,則可使用「\[Enter]」來擴展至下一行ip
f、"#"可做爲批註。it
二、執行文件(/home/sam/shell.sh)io
一、直接命令執行: shell.sh文件必需要具有可讀與可執行(rx)的權限,而後:function
絕對路徑: 使用/home/sam/shell.sh來執行
相對路徑: 假設工做目錄爲/home/sam/ , 則使用./shell.sh
變量「PATH」功能: 將shell.sh放在PATH指定的目錄內, 例如:~/bin/
二、以bash進程來執行:經過「bash shell.sh」或「sh shell.sh」來執行
三、script的執行方式的區別(source, sh script, ./script)
一、利用直接執行的方式來執行script:
不管是絕對路徑/相對路徑仍是$PATH內, 或者是利用bash(或sh)來執行腳本時,該script都會使用一個新的bash環境來執行(子進程)
二、利用source來執行腳本: 在父進程中執行
2、善用判斷式
一、 利用test命令的測試功能
如:test -e /sam && echo "exist" || echo "Not exist"
二、利用判斷符號[]
如: [-z "$HOME"] ; echo $?
注意:
a、在括號[]內每一個組件度須要有空格鍵來分隔;
b、在中括號內的變量,最好都以雙引號括起來;
c、在中括號內的常量, 最好都以單或雙引號括起來。
三、shell script 的默認變量($0 $1 ...)
$0: 執行的腳本文件名
$1,$2,...: 第1,2,...個參數
$#: 表明後接的參數「個數」
$@: 表明「$1」、「$2」、「$3」之意,每一個變量是獨立的(用雙引號括起來)
$*: 表明"$1c$2c$3c$4",其中c爲分隔字符, 默認爲空格鍵
shift: 形成參數變量號碼偏移
shift 會移動變量, 並且shift後面能夠接數字, 表明拿掉最前面的幾個參數的意思。
3、 條件判斷式
一、利用 if...then
單層:
if [條件判斷式]; then
邏輯
fi <--if語句結束語
多重:
if [條件判斷式]; then
邏輯
elif [條件判斷式]; then
邏輯
else
邏輯
fi
二、利用case...esac判斷
case $變量名稱 in
"第一個變量內容" )
程序段
;;
"第二個變量內容")
程序段
;;
*)
exit 1
;;
esac
3 、利用function功能
function fname(){
程序段
}
4、循環(loop)
一、while do done, until do done(不定循環)
while [ condition ]
do
程序段落
done
----------》當condition條件成立時,就進行循環
until [ condition ]
do
程序段落
done
-----------》當condition條件成立時,就終止循環
二、for ... do...done(固定循環)
for var in con1 con2 con3...
do
程序段落
done
三、for ...do ...done的數值處理
for((初始值; 限制值; 執行步長))
do
程序段
done
5、shell script的追蹤與調試
sh [-nvx] scripts.sh
-n : 不要執行script 僅查詢語法的問題
-v: 在執行script前, 先將script的內容輸出到屏幕上
-x: 將使用到的script內容顯示到屏幕上