麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Linux Shell > 正文

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

2020-07-27 18:45:24
字體:
來源:轉載
供稿:網友

先來說一下主要以下有幾種方式:

  • fork: 如果腳本有執行權限的話,path/to/foo.sh。如果沒有,sh path/to/foo.sh。
  • exec: exec path/to/foo.sh
  • source: source path/to/foo.sh

fork

fork 是最普通的, 就是直接在腳本里面用 path/to/foo.sh 來調用 foo.sh 這個腳本,比如如果是 foo.sh 在當前目錄下,就是 ./foo.sh。運行的時候 terminal 會新開一個子 Shell 執行腳本 foo.sh,子 Shell 執行的時候, 父 Shell 還在。子 Shell 執行完畢后返回父 Shell。 子 Shell 從父 Shell 繼承環境變量,但是子 Shell 中的環境變量不會帶回父 Shell。

exec

exec fork 不同,不需要新開一個子 Shell 來執行被調用的腳本. 被調用的腳本與父腳本在同一個 Shell 內執行。但是使用 exec 調用一個新腳本以后, 父腳本中 exec 行之后的內容就不會再執行了。這是 exec source 的區別.

source

fork 的區別是不新開一個子 Shell 來執行被調用的腳本,而是在同一個 Shell 中執行. 所以被調用的腳本中聲明的變量和環境變量, 都可以在主腳本中進行獲取和使用。

其實從命名上可以感知到其中的細微區別,下面通過兩個腳本來體會三種調用方式的不同:

第一個腳本,我們命名為 1.sh:

#!/usr/bin/env bashA=1echo "before exec/source/fork: PID for 1.sh = $$"export Aecho "In 1.sh: variable A=$A"case $1 in    --exec)        echo -e "==> using exec…/n"        exec ./2.sh ;;    --source)        echo -e "==> using source…/n"        . ./2.sh ;;    *)        echo -e "==> using fork by default…/n"        ./2.sh ;;esacecho "after exec/source/fork: PID for 1.sh = $$"echo -e "In 1.sh: variable A=$A/n"

第二個腳本,我們命名為 2.sh

#!/usr/bin/env bashecho "PID for 2.sh = $$"echo "In 2.sh get variable A=$A from 1.sh"A=2export Aecho -e "In 2.sh: variable A=$A/n"

注:這兩個腳本中的參數 $$ 用于返回腳本的 PID , 也就是進程 ID。這個例子是想通過顯示 PID 判斷兩個腳本是分開執行還是同一進程里執行,也就是是否有新開子 Shell。當執行完腳本 2.sh 后,腳本 1.sh 后面的內容是否還執行。

chmod +x 1.sh 2.sh 給兩個腳本加上可執行權限后執行情況:

fork

fork 方式可以看出,兩個腳本都執行了,運行順序為1-2-1,從兩者的PID值(1.sh PID=82266, 2.sh PID=82267),可以看出,兩個腳本是分成兩個進程運行的。

exec

exec 方式運行的結果是,2.sh 執行完成后,不再回到 1.sh。運行順序為 1-2。從pid值看,兩者是在同一進程 PID=82287 中運行的。

source

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲国产精品一区二区三区 | 国产美女视频黄a视频免费 日韩黄色在线播放 | 国产羞羞网站 | 国产精品久久久麻豆 | 久久久青青草 | 久久亚洲精品11p | 中文字幕在线播放视频 | 免费试看av| 久久精品九九 | 免费一级a毛片免费观看 | 欧美日韩亚洲在线观看 | 精品一区二区免费 | 久久99精品久久久久久秒播蜜臀 | 欧美精品1区 | 在线观看一区二区三区四区 | chinesegv男男猛男无套 | 欧美精品亚洲人成在线观看 | 欧美黄色免费视频 | 极品大长腿啪啪高潮露脸 | 国产免费一区二区三区 | 国产精品久久久久久久久久三级 | 青青操精品 | 涩涩伊人| 黄色电影免费提供 | 大片毛片 | 91成人亚洲 | 一区二区免费看 | 日本aaaa片毛片免费观蜜桃 | 日日草夜夜草 | 九九视频久久 | 国内精品伊人久久 | 成人h视频在线 | videos高潮 | 日本在线不卡一区二区三区 | 午夜精品在线视频 | 看免费黄色一级片 | 深夜福利视频免费观看 | 羞羞视频2023 | 中国毛片在线观看 | 免看黄大片aa | 色播久久|