歡迎您光臨本站 註冊首頁

詳解Shell腳本中調用另一個Shell腳本的三種方式

←手機掃碼閱讀     bom485332 @ 2020-05-10 , reply:0

主要以下有幾種方式:
Command Explanation fork 新開一個子 Shell 執行,子 Shell 可以從父 Shell 繼承環境變量,但是子 Shell 中的環境變量不會帶回給父 Shell。 exec 在同一個 Shell 內執行,但是父腳本中 exec 行之後的內容就不會再執行了 source 在同一個 Shell 中執行,在被調用的腳本中聲明的變量和環境變量, 都可以在主腳本中進行獲取和使用,相當於合併兩個腳本在執行。
第一種:fork 特點:會生成子PID而且可重複被調用。
♦fork 是最普通的, 就是直接在腳本里面用 path/to/foo.sh 來調用
♦foo.sh 這個腳本,比如如果是 foo.sh 在當前目錄下,就是 ./foo.sh。運行的時候 terminal 會新開一個子 Shell 執行腳本 foo.sh,子 Shell 執行的時候, 父 Shell 還在。子 Shell 執行完畢後返回父 Shell。 子 Shell 從父 Shell 繼承環境變量,但是子 Shell 中的環境變量不會帶回父 Shell。
1.進入 編輯:
[root@localhost ~]# vim liqiang-2.sh
2.編輯內容調用寫法:
echo 在這裡調用 ./liqiang.sh
3.輸出結果
[root@localhost ~]# ./liqiang-2.sh
在這裡調用
hollo
hollo
第二種:exec 特點:exec調用一次之後的所有代碼都不執行
♦exec 與 fork 不同,不需要新開一個子 Shell 來執行被調用的腳本. 被調用的腳本與父腳本在同一個 Shell 內執行。但是使用 exec 調用一個新腳本以後, 父腳本中 exec 行之後的內容就不會再執行了。這是 exec 和 source 的區別.
1.編輯內容調用寫法:
echo 在這裡調用 ./liqiang.sh echo 這裡是exec函數調用 exec ./liqiang-3.sh echo 這裡是source source liqiang-4.sh echo 在這裡調用 ./liqiang.sh echo 這裡是exec函數調用 exce liqiang-3.sh echo 這裡是source source liqiang-4.sh echo 在這裡調用 ./liqiang.sh echo 這裡是exec函數調用 exce liqiang-3.sh echo 這裡是source source liqiang-4.sh
2.輸出結果:特點在於執行了第一個exec之後下面的就再也不執行了。
[root@localhost ~]# ./liqiang-2.sh 在這裡調用 hollo hollo 這裡是exec函數調用 看看這裡調用幾次 調用一次就對了
第三種:sourcesource特點不會生成子PID也就是子進程,他就行把被用的腳本拷貝到當前shell腳本中執行,可以重複被調用。
♦與 fork 的區別是不新開一個子 Shell 來執行被調用的腳本,而是在同一個 Shell 中執行. 所以被調用的腳本中聲明的變量和環境變量, 都可以在主腳本中進行獲取和使用。
1.編輯內容調用寫法:
echo 在這裡調用 ./liqiang.sh echo 這裡是exec函數調用這次被註釋掉了 #exec ./liqiang-3.sh echo 這裡是source source liqiang-4.sh echo 在這裡調用 ./liqiang.sh echo 這裡是exec函數調用被註釋掉了 #exce liqiang-3.sh echo 這裡是source source liqiang-4.sh echo 在這裡調用 ./liqiang.sh echo 這裡是exec函數調用 exec liqiang-3.sh echo 這裡是source source liqiang-4.sh
♦2.執行結果:
[root@localhost ~]# ./liqiang-2.sh 在這裡調用 hollo hollo 這裡是exec函數調用這次被註釋掉了 這裡是source 看看這裡調用幾次 沒有限制就對了 在這裡調用 hollo hollo 這裡是exec函數調用被註釋掉了 這裡是source 看看這裡調用幾次 沒有限制就對了 在這裡調用 hollo hollo 這裡是exec函數調用#之後的沒被調用了
注意:
♦source方式的結果是兩者在同一進程裡運行。該方式相當於把兩個腳本先合併再運行。
♦給多個腳本賦權限
chmod a+x liqiang-2.sh liqiang-3.sh liqiang-4.sh


[bom485332 ] 詳解Shell腳本中調用另一個Shell腳本的三種方式已經有236次圍觀

http://coctec.com/docs/linux/show-post-233611.html