用戶能夠用任何編輯程序來編寫Shell程序。由於Shell程序是解釋執行的,因此不須要編譯成目的程序。按照Shell編程的慣例,以 bash爲例,程序的第一行通常爲「#!/bin/bash」,其中 # 表示該行是註釋,歎號 ! 告訴Shell運行歎號以後的命令並用文檔的其他部分做爲輸入,也就是運行/bin/bash並讓/bin/bash去執行Shell程序的內容。 編程
執行Shell程序的方法有3種。 bash
1.sh Shell程序文件名 編輯器
這種方法的命令格式爲: 命令行
bash Shell程序文件名 調試
這其實是調用一個新的bash命令解釋程序,而把Shell程序文件名做爲參數傳遞給它。新啓動的Shell將去讀指定的文件,可執行文件中列出的命令,當全部的命令都執行完後結束。該方法的優勢是能夠利用Shell調試功能。 文檔
2.sh 編譯
格式爲: 變量
bash< Shell程序名 終端
這種方式就是利用輸入重定向,使Shell命令解釋程序的輸入取自指定的程序文件。 引用
3.用chmod命令使Shell程序成爲可執行的
一個文件可否運行取決於該文檔的內容自己可執行且該文件具備執行權。對於Shell程序,當用編輯器生成一個文件時,系統賦予的許可權都是644(rw-r-r--),所以,當用戶須要運行這個文件時,只須要直接鍵入文件名便可。
在這3種運行Shell程序的方法中,最好按下面的方式選擇:當剛建立一個Shell程序,對它的正確性尚未把握時,應當使用第一種方式進行 調試。當一個Shell程序已經調試好時,應使用第三種方式把它固定下來,之後只要鍵入相應的文件名便可,並可被另外一個程序所調用。
4.bash程序的調試
在編程過程當中不免會出錯,有的時候,調試程序比編寫程序花費的時間還要多,Shell程序一樣如此。
Shell程序的調試主要是利用bash命令解釋程序的選擇項。調用bash的形式是:
bash -選擇項Shell程序文件名
幾個經常使用的選擇項是:
-e 若是一個命令失敗就當即退出。
-n 讀入命令可是不執行它們。
-u 置換時把未設置的變量看作出錯。
-v 當讀入Shell輸入行時把它們顯示出來。
-x 執行命令時把命令和它們的參數顯示出來。
上面的全部選項也能夠在Shell程序內部用「set -選擇項」的形式引用,而「set +選擇項」則將禁止該選擇項起做用。若是隻想對程序的某一部分使用某些選擇項時,則能夠將該部分用上面兩個語句包圍起來。
(1)未置變量退出和當即退出
未置變量退出特性容許用戶對全部變量進行檢查,若是引用了一個未賦值的變量就終止Shell程序的執行。Shell一般容許未置變量的使用,在 這種狀況下,變量的值爲空。若是設置了未置變量退出選擇項,則一旦使用了未置變量就顯示錯誤信息,並終止程序的運行。未置變量退出選擇項爲-u。
當Shell運行時,若遇到不存在或不可執行的命令、重定向失敗或命令非正常結束等狀況時,若是未經從新定向,該出錯信息會顯示在終端屏幕上, 而Shell程序仍將繼續執行。要想在錯誤發生時迫使Shell程序當即結束,可使用-e選項將Shell程序的執行當即終止。
(2)Shell程序的跟蹤
調試Shell程序的主要方法是利用Shell命令解釋程序的-v或-x選項來跟蹤程序的執行。-v選擇項使Shell在執行程序的過程當中,把 它讀入的每個命令行都顯示出來,而-x選擇項使Shell在執行程序的過程當中把它執行的每個命令在行首用一個+加上命令名顯示出來。並把每個變量和 該變量所取的值也顯示出來。所以,它們的主要區別在於:在執行命令行以前無-v,則顯示出命令行的原始內容,而有-v時則顯示出通過替換後的命令行的內 容。
除了使用Shell的-v和-x選擇項之外,還能夠在Shell程序內部採起一些輔助調試的措施。例如,能夠在Shell程序的一些關鍵地方使 用echo命令把必要的信息顯示出來,它的做用至關於C語言中的printf語句,這樣就能夠知道程序運行到什麼地方及程序目前的狀態。