執行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指令碼存放該命令,以後用時就很方便了。
shell指令碼執行方式
echo輸出命令 echo 選項 輸出內容 選項 e 支援反斜線控制的字元轉換 shell指令碼 指令碼都以.sh結束,指令碼第一行 bin bash 以hello.sh簡單指令碼為例 指令碼執行有兩種方法 這裡出現了no such file or directory 原因是格式不匹配,解決方案 d...
shell 指令碼的執行方式
執行shell指令碼的方式基本上有三種 1 輸入定向到shell指令碼 這種方式是用輸入重定向方式讓shell從給定檔案中讀入命令列並進行相應處理。其一般形式是 bash 指令碼名 例如 bash 2 以指令碼名作為引數 其一般形式是 bash 指令碼名 引數 例如 bash ex2 usr men...
Shell指令碼的執行方式
註明 wd代表 指令碼儲存的目錄 1.fork 語法 wd shell.sh fork是最普通的,就是直接在指令碼裡面用 wd shell.sh來呼叫shell.sh這個指令碼.執行的時候開乙個子shell執行呼叫的指令碼,子shell執行的時候,父shell還在。子shell執行完畢後返回父she...