1.1 Shell編程概述
shell程序是一個(gè)包含UNIX命令的普通文件,這個(gè)文件的許可權(quán)限至少應(yīng)該為可讀和可執(zhí)行。在shell提示符下鍵入文件名就可執(zhí)行shell程序,數(shù)據(jù)可以通過(guò)三種方式傳送到shell程序
??-環(huán)境變量
??-命令行參數(shù)
??-用戶的輸入
shell是一個(gè)命令解釋器,它會(huì)解釋你在命令提示符下輸入的命令。但是,你可能有一組想要多次執(zhí)行的命令。shell提供了一種功能,讓你將這組命令存放在一個(gè)文件中,然后你可以象unix系統(tǒng)提供的其他程序一樣執(zhí)行這個(gè)文件。這個(gè)命令文件就叫做shell程序或者shell腳本。當(dāng)你運(yùn)行這個(gè)文件,它會(huì)象你在命令行輸入這些命令一樣地執(zhí)行這些命令。
為了讓shell讀取你的shell程序并且執(zhí)行,shell必須能夠讀取并能夠執(zhí)行每一行命令。因此,shell腳本的許可權(quán)限必須被設(shè)置為可讀和可執(zhí)行。為了讓shell可以找到你的程序,你可以選擇輸入完全路徑名,或者將這個(gè)腳本的路徑放在于你的PATH環(huán)境變量指定的路徑列表中。許多的用戶會(huì)在他們的HOME目錄下創(chuàng)建一個(gè)bin目錄來(lái)存放他們自己開發(fā)的script,然后將$HOME/bin加入到他們的PATH環(huán)境變量中。
你可以寫出非常復(fù)雜的shell腳本,因?yàn)閟hell支持變量,命令行參數(shù),交互式輸入,tests(判斷)),branches(分支),和loops(循環(huán))。
1.2 shell程序舉例
$ cat myprog
#this is the program myprog
date
ls –F
$ myprog
要?jiǎng)?chuàng)建一個(gè)shell程序,考慮進(jìn)行以下步驟:
$ vi myprog ?????一個(gè)包含shell命令的程序。
#this is the program myprog
date
ls –F
$ chmod +x myprog 增加文件的執(zhí)行模式
$ myprog
Thu Jul 11 11:10 EDT 1994
F1 f2 memo/ myprog*
首先使用一個(gè)文本編輯器來(lái)創(chuàng)建一個(gè)shell程序myprog。在程序執(zhí)行之前,這個(gè)文件必須被賦予可執(zhí)行的權(quán)限。然后在命令提示符下輸入這個(gè)程序名。如上例所示,當(dāng)myprog執(zhí)行的時(shí)候,一個(gè)子shell會(huì)被創(chuàng)建。這個(gè)子shell會(huì)從shell程序文件myprog讀取輸入而不是從命令行。這個(gè)shell中的每個(gè)命令的執(zhí)行都會(huì)創(chuàng)建一個(gè)子shell。一旦所有的命令都被執(zhí)行,所有的子shell會(huì)中止,然后會(huì)返回到原始的父shell。
Shell程序中的注釋:
推薦在shell程序中提供注釋語(yǔ)句來(lái)注明程序的內(nèi)容。注釋由一個(gè)#符號(hào)開始。Shell不會(huì)去執(zhí)行任何在#之后的語(yǔ)句。#能夠出現(xiàn)在命令行的任何位置。
注意:你不可以給shell程序取名為test因?yàn)閠est是一個(gè)內(nèi)部的shell命令。