執行Shell指令碼的方式

tonywi888發表於2007-04-13
執行Shell指令碼的方式基本上有三種:

(1)輸入定向到Shell指令碼

這種方式是用輸入重定向方式讓Shell從給定檔案中讀入命令列並進行相應處理。其一般形式是:

$ bash < 指令碼名

例如:

$ bash
Shell從檔案ex1中讀取命令列,並執行它們。當Shell到達檔案末尾時就終止執行,並把控制返回到Shell命令狀態。此時,指令碼名後面不能帶引數。

(2)以指令碼名作為引數

其一般形式是:

$ bash 指令碼名 [引數]

例如:

$ bash ex2 /usr/meng /usr/zhang

其執行過程與上一種方式一樣,但這種方式的好處是能在指令碼名後面帶有引數,從而將引數值傳遞給程式中的命令,使一個Shell指令碼可以處理多種情況,就如同函式呼叫時可根據具體問題給定相應的實參。

如果以目前Shell(以·表示)執行一個Shell指令碼,則可以使用如下簡便形式:

$ · 指令碼名 [引數]

以Shell指令碼作為Shell的命令列引數,這種方式可用來進行程式除錯。

(3)將Shell指令碼的許可權設定為可執行,然後在提示符下直接執行它。

通常使用者是不能直接執行由正文編輯器(如vi)建立的Shell指令碼的,因為直接編輯生成的指令碼檔案沒有“執行”許可權。如果要把Shell指令碼直接當作命令執行,就需要利用命令chmod 將它置為有“執行”許可權。例如,

$ chmod a+x ex2

就把Shell指令碼ex2置為對所有使用者都有“執行”許可權。然後,在提示符後輸入指令碼名ex2就可直接執行該檔案。注意,此時該指令碼所在的目錄應被包含在命令搜尋路徑(PATH)中。例如:

$ ex2

Shell接收使用者輸入的命令(指令碼名),並進行分析。如果檔案被標記為可執行的,但不是被編譯過的程式,Shell就認為它是一個Shell指令碼。 Shell將讀取其中的內容,並加以解釋執行。所以,從使用者的觀點看,執行Shell指令碼的方式與執行一般的可執行檔案的方式相似。

因此,使用者開發的Shell指令碼可以駐留在命令搜尋路徑的目錄之下(通常是“/bin”、 “/usr/bin”等),像普通命令一樣使用。這樣,也就開發出自己的新命令。如果打算反覆使用編好的Shell指令碼,那麼採用這種方式就比較方便。

Shell指令碼經常被用來執行重複性的工作,例如,當進入系統時要檢視有無信件、列出誰在系統中、將工作目錄改到指定目錄並予以顯示、印出當前日期等。完成這些工作的命令是固定的。為了減少錄入時間,可把這些命令建立在一個Shell指令碼中,以後每次使用該檔名就可執行這些工作。

另外,完成某些固定工作時需輸入的命令很複雜,例如檔案系統的安裝(mount),要帶多個選項和引數。此時,利用Shell指令碼存放該命令,以後用時就很方便了。[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8570952/viewspace-910391/,如需轉載,請註明出處,否則將追究法律責任。

相關文章