Linux執行SHELL指令碼的幾種方法

2021-07-13 01:10:52 字數 2021 閱讀 4926

1、source(或.

)命令用法: 

source filename 或 . filename

作用:在當前bash環境下讀取並執行filename中的命令,該filename檔案可以

無執行許可權。

如:「source bash_profile」與「. bash_profile」兩者等效。 

source(或點)命令通常用於重新執行剛修改的初始化文件。 

source命令(從 c shell 而來)是bash shell的內建命令。 

點命令(從bourne shell而來)就是順序的執行檔案裡的命令而已。

2、sh和bash命令用法:   sh filename 或 bash filename 

作用:在當前相應的bash環境下新建乙個子shell讀取並執行filename中的命令,該filename檔案可以

無執行許可權。

注:兩者在執行檔案時的不同,是分別用自己的shell來跑檔案。 sh使用「-n」選項進行shell指令碼的語法檢查,使用「-x」選項實現shell指令碼逐條語句的跟蹤,可以巧妙地利用shell的內建變數增強「-x」選項的輸出資訊等。

3、./(或絕對路徑)命令用法:   ./filename 或 /..../..../filename

作用:開啟乙個子shell來讀取並執行filename中命令,該檔案必須有可執行許可權。 

注:執行乙個shell指令碼時會啟動另乙個命令直譯器. 

每個shell指令碼有效地執行在父shell(parent shell)的乙個子程序裡. 這個父shell是指在乙個控制終端或在乙個xterm視窗中給你命令指示符的程序。shell指令碼也可以啟動他自已的子程序。這些子shell(即子程序)使指令碼並行地、有效率地地同時執行指令碼內的多個子任務。指令碼裡的變數設定在父程序中無效。指令碼中的export僅僅作用於該指令碼及其子指令碼位置變數引數在向指令碼傳遞引數時,可以使用此位置變數來獲取引數。他們分別是: 

$0:指令碼名字。此變數包含位址,可以使用basename

$0獲得指令碼名稱 

$1:第乙個引數 

$2,$3,$4,$5,...依次類推。

特定變數引數 

一些指令碼執行的相關控制資訊 

$# 傳遞到指令碼的引數個數 

$* 以乙個單字串顯示所有向指令碼傳遞的引數 

$$ 指令碼執行的id號 

$! 後台執行的最後乙個程序的id號 

$@ 與$#相同,但是使用時加引號,並在引號中返回每個引數。 

$- 顯示shell使用的當前選項。 

$? 顯示最後命令的推出狀況,0表示沒有錯誤。

source filename 與 sh filename 及./filename執行指令碼的區別在那裡呢?

1.當shell指令碼具有可執行許可權時,用sh filename與./filename執行指令碼是沒有區別得。./filename是因為當前目錄沒有在path中,所有"./"是用來表示當前目錄的。

2.sh filename 重新建立乙個子shell,在子shell中執行指令碼裡面的語句,該子shell繼承父shell的環境變數,但子shell新建的、改變的變數不會被帶回父shell,除非使用export。

3.source filename:這個命令其實只是簡單地讀取指令碼裡面的語句依次在當前shell裡面執行,沒有建立新的子shell。那麼指令碼裡面所有新建、改變變數的語句都會儲存在當前shell裡面。

舉例說明:

1.新建乙個

test

.sh指令碼,內容為:name=shaodongju

2.然後使其可執行chmod u+x test.sh

3.執行sh test.sh後,echo $a,顯示為空,因為

name=shaodongju

並未傳回給當前shell

4.執行./test.sh後,也是一樣的效果

5.執行source test.sh 或者 . test.sh,然後echo $

name

,則會顯示

shaodongju

,說明name=shaodongju

的變數在當前shell中

Linux 執行shell指令碼的方法

方法一 切換到shell指令碼所在的目錄 此時,稱為工作目錄 執行shell指令碼 如下 cd data shell hello.sh 的意思是說在當前的工作目錄下執行hello.sh。如果不加上.bash可能會響應找到不到hello.sh的錯誤資訊。因為目前的工作目錄 data shell 可能不...

Linux下執行Shell指令碼

linux下可以用兩種方式執行shell指令碼 1 用shell程式執行指令碼 根據你的shell指令碼的型別,選擇shell程式,常用的有sh,bash,tcsh等。一般來說,第一行 bin bash裡面指明了shell型別的,比如 bin bash指明是bash,bin sh則是sh 然後輸入命...

shell 執行shell指令碼

bin bash echo hello world 是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種 shell。echo 命令用於向視窗輸出文字。1 作為可執行程式 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼注意,一定要寫成 test...