執行Shell程式的方法

2021-04-26 16:51:02 字數 1864 閱讀 1086

使用者可以用任何編輯程式來編寫shell程式。因為shell程式是解釋執行的,所以不需要編譯成目的程式。按照shell程式設計的慣例,以bash為例,程式的第一行一般為「#!/bin/bash」,其中 # 表示該行是注釋,嘆號 ! 告訴shell執行嘆號之後的命令並用文件的其餘部分作為輸入,也就是執行/bin/bash並讓/bin/bash去執行shell程式的內容。

執行shell程式的方法有3種。

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語句,這樣就可以知道程式執行到什麼地方及程式目前的狀態。

shell程式的執行

編輯完該檔案之後不能立即執行該檔案,需給檔案設定可執行程式許可權。使用如下命令。root localhost bin chmod x date 執行shell程式有下面三種方法 方法一 root localhost bin date mr.root,today is 三月 30 星期一 wish y...

shell指令碼的執行方法

1.方法一 編寫指令碼 root m01 home cat 1 sh bin env bash echo hello world 指令碼增加可執行許可權 root m01 home chmod x 1.sh 標準執行指令碼 root m01 home home 1.sh 絕對路徑 root m01 ...

shell 後台執行程式

1.最經常被用到 這個用在乙個命令的最後,可以把這個命令放到後台執行 2.ctrl z 可以將乙個正在前台執行的命令放到後台,並且暫停 3.jobs 檢視當前有多少在後台執行的命令 4.fg 將後台中的命令調至前台繼續執行 如果後台 中有多個命令,可以用 fg jobnumber將選中的命令調出,j...