主頁 > 知識庫 > 詳解Shell腳本中調(diào)用另一個Shell腳本的三種方式

詳解Shell腳本中調(diào)用另一個Shell腳本的三種方式

熱門標簽:服務(wù)外包 Linux服務(wù)器 網(wǎng)站排名優(yōu)化 AI電銷 百度競價排名 呼叫中心市場需求 地方門戶網(wǎng)站 鐵路電話系統(tǒng)

主要以下有幾種方式:

Command Explanation
fork 新開一個子 Shell 執(zhí)行,子 Shell 可以從父 Shell 繼承環(huán)境變量,但是子 Shell 中的環(huán)境變量不會帶回給父 Shell。
exec 在同一個 Shell 內(nèi)執(zhí)行,但是父腳本中 exec 行之后的內(nèi)容就不會再執(zhí)行了
source 在同一個 Shell 中執(zhí)行,在被調(diào)用的腳本中聲明的變量和環(huán)境變量, 都可以在主腳本中進行獲取和使用,相當于合并兩個腳本在執(zhí)行。

第一種:fork 特點:會生成子PID而且可重復被調(diào)用。

  ♦fork 是最普通的, 就是直接在腳本里面用 path/to/foo.sh 來調(diào)用

  ♦foo.sh 這個腳本,比如如果是 foo.sh 在當前目錄下,就是 ./foo.sh。運行的時候 terminal 會新開一個子 Shell 執(zhí)行腳本 foo.sh,子 Shell 執(zhí)行的時候, 父 Shell 還在。子 Shell 執(zhí)行完畢后返回父 Shell。 子 Shell 從父 Shell 繼承環(huán)境變量,但是子 Shell 中的環(huán)境變量不會帶回父 Shell。

1.進入 編輯:

 [root@localhost ~]# vim liqiang-2.sh

2.編輯內(nèi)容調(diào)用寫法:

echo 在這里調(diào)用
./liqiang.sh

3.輸出結(jié)果

[root@localhost ~]# ./liqiang-2.sh

在這里調(diào)用
hollo
hollo

第二種:exec 特點:exec調(diào)用一次之后的所有代碼都不執(zhí)行

  ♦exec 與 fork 不同,不需要新開一個子 Shell 來執(zhí)行被調(diào)用的腳本. 被調(diào)用的腳本與父腳本在同一個 Shell 內(nèi)執(zhí)行。但是使用 exec 調(diào)用一個新腳本以后, 父腳本中 exec 行之后的內(nèi)容就不會再執(zhí)行了。這是 exec 和 source 的區(qū)別.

1.編輯內(nèi)容調(diào)用寫法:

echo 在這里調(diào)用 
./liqiang.sh
echo 這里是exec函數(shù)調(diào)用
exec ./liqiang-3.sh
echo 這里是source
source liqiang-4.sh
echo 在這里調(diào)用
./liqiang.sh
echo 這里是exec函數(shù)調(diào)用
exce liqiang-3.sh
echo 這里是source
source liqiang-4.sh
echo 在這里調(diào)用
./liqiang.sh
echo 這里是exec函數(shù)調(diào)用
exce liqiang-3.sh
echo 這里是source
source liqiang-4.sh

2.輸出結(jié)果:特點在于執(zhí)行了第一個exec之后下面的就再也不執(zhí)行了。

[root@localhost ~]# ./liqiang-2.sh
在這里調(diào)用
hollo
hollo
這里是exec函數(shù)調(diào)用
看看這里調(diào)用幾次
調(diào)用一次就對了

第三種:sourcesource特點不會生成子PID也就是子進程,他就行把被用的腳本拷貝到當前shell腳本中執(zhí)行,可以重復被調(diào)用。

  ♦與 fork 的區(qū)別是不新開一個子 Shell 來執(zhí)行被調(diào)用的腳本,而是在同一個 Shell 中執(zhí)行. 所以被調(diào)用的腳本中聲明的變量和環(huán)境變量, 都可以在主腳本中進行獲取和使用。

1.編輯內(nèi)容調(diào)用寫法:

echo 在這里調(diào)用
./liqiang.sh
echo 這里是exec函數(shù)調(diào)用這次被注釋掉了
#exec ./liqiang-3.sh
echo 這里是source
source liqiang-4.sh
echo 在這里調(diào)用
./liqiang.sh
echo 這里是exec函數(shù)調(diào)用被注釋掉了
#exce liqiang-3.sh
echo 這里是source
source liqiang-4.sh
echo 在這里調(diào)用
./liqiang.sh
echo 這里是exec函數(shù)調(diào)用
exec liqiang-3.sh
echo 這里是source
source liqiang-4.sh 

♦2.執(zhí)行結(jié)果:

[root@localhost ~]# ./liqiang-2.sh
在這里調(diào)用
hollo
hollo
這里是exec函數(shù)調(diào)用這次被注釋掉了
這里是source
看看這里調(diào)用幾次
沒有限制就對了
在這里調(diào)用
hollo
hollo
這里是exec函數(shù)調(diào)用被注釋掉了
這里是source
看看這里調(diào)用幾次
沒有限制就對了
在這里調(diào)用
hollo
hollo
這里是exec函數(shù)調(diào)用#之后的沒被調(diào)用了

注意:

  ♦source方式的結(jié)果是兩者在同一進程里運行。該方式相當于把兩個腳本先合并再運行。

  ♦給多個腳本賦權(quán)限

chmod a+x liqiang-2.sh liqiang-3.sh liqiang-4.sh

到此這篇關(guān)于詳解Shell腳本中調(diào)用另一個Shell腳本的三種方式的文章就介紹到這了,更多相關(guān)Shell調(diào)用另一個Shell腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Java程序去調(diào)用并執(zhí)行shell腳本及問題總結(jié)(推薦)
  • Spring Boot調(diào)用 Shell 腳本實現(xiàn)看門狗功能
  • Java遠程調(diào)用Shell腳本并獲取輸出信息【推薦】
  • 在Shell腳本中調(diào)用另一個腳本的三種方式講解
  • JAVA如何調(diào)用Shell腳本
  • Shell腳本中引用、調(diào)用另一個腳本文件的2種方法
  • Java調(diào)用linux shell腳本的方法
  • Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實例
  • Shell腳本調(diào)用另一個腳本的三種方法

標簽:湘潭 銅川 湖南 仙桃 蘭州 崇左 黃山 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標題《詳解Shell腳本中調(diào)用另一個Shell腳本的三種方式》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266