亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2019年04月04日 14:36:00   作者:admin  
今天小編就為大家分享一篇關(guān)于在Shell腳本中調(diào)用另一個腳本的三種方式講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

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

  • fork: 如果腳本有執(zhí)行權(quán)限的話,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 來調(diào)用 foo.sh 這個腳本,比如如果是 foo.sh 在當(dāng)前目錄下,就是 ./foo.sh。運行的時候 terminal 會新開一個子 Shell 執(zhí)行腳本 foo.sh,子 Shell 執(zhí)行的時候, 父 Shell 還在。子 Shell 執(zhí)行完畢后返回父 Shell。 子 Shell 從父 Shell 繼承環(huán)境變量,但是子 Shell 中的環(huán)境變量不會帶回父 Shell。

exec

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

source

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

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

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

#!/usr/bin/env bash
A=1
echo "before exec/source/fork: PID for 1.sh = $$"
export A
echo "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 ;;
esac
echo "after exec/source/fork: PID for 1.sh = $$"
echo -e "In 1.sh: variable A=$A\n"

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

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

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

chmod +x 1.sh 2.sh 給兩個腳本加上可執(zhí)行權(quán)限后執(zhí)行情況:

fork

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

exec

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

source

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • shell腳本使用兩個橫杠接收外部參數(shù)的方法

    shell腳本使用兩個橫杠接收外部參數(shù)的方法

    這篇文章主要介紹了shell腳本使用兩個橫杠接收外部參數(shù)的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • bash批量重命名、批量更改后輟的方法

    bash批量重命名、批量更改后輟的方法

    這篇文章主要介紹了bash批量重命名、批量更改后輟的方法,需要的朋友可以參考下
    2014-05-05
  • Shell腳步攻略之管道重定向基礎(chǔ)

    Shell腳步攻略之管道重定向基礎(chǔ)

    管道是為了解決進程間通信問題而存在,它可以讓兩個進程之間的數(shù)據(jù)進行傳遞,將一個進程的輸出數(shù)據(jù)傳遞給另一個進程作為其輸入數(shù)據(jù)
    2017-08-08
  • Shell腳本注冊到Linux系統(tǒng)服務(wù)實例

    Shell腳本注冊到Linux系統(tǒng)服務(wù)實例

    這篇文章主要介紹了Shell腳本注冊到Linux系統(tǒng)服務(wù)實例,本文給出一個可以作為Linux服務(wù)的腳本實例,及加入服務(wù)的方法等步驟,需要的朋友可以參考下
    2015-05-05
  • Linux命令定位與查找之which、whereis和find的用法示例詳解

    Linux命令定位與查找之which、whereis和find的用法示例詳解

    Linux命令的定位與查找是我們?nèi)粘9ぷ髦斜貍涞募寄?掌握which、whereis和find這三個命令,可以幫助我們更加高效地進行文件搜索和定位工作,這篇文章主要介紹了Linux命令定位與查找:which、whereis和find的用法詳解,需要的朋友可以參考下
    2023-10-10
  • shell中長命令的換行處理方法示例

    shell中長命令的換行處理方法示例

    這篇文章主要給大家介紹了關(guān)于shell中長命令的換行處理方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用shell具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Shell腳本調(diào)用另一個腳本的三種方法

    Shell腳本調(diào)用另一個腳本的三種方法

    這篇文章主要介紹了Shell腳本調(diào)用另一個腳本的三種方法,幫助大家更好的理解和學(xué)習(xí)shell,感興趣的朋友可以了解下
    2020-08-08
  • 用于檢測進程的shell腳本代碼小結(jié)

    用于檢測進程的shell腳本代碼小結(jié)

    本文介紹一段shell腳本,它可以檢測某進程或某服務(wù)是否正在運行,然后以郵件通知。有需要的朋友參考下
    2013-11-11
  • Linux Shell 腳本編程入門教程

    Linux Shell 腳本編程入門教程

    Linux的Shell種類眾多,常見的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),Shell是用戶與Linux操作系統(tǒng)溝通的橋梁,對本文感興趣的朋友一起看看吧
    2015-11-11
  • 使用Linux shell腳本實現(xiàn)FTP定時執(zhí)行批量下載指定文件

    使用Linux shell腳本實現(xiàn)FTP定時執(zhí)行批量下載指定文件

    使用FTP定時批量下載指定文件的shell腳本,具體實例介紹如下所示,需要的朋友參考下吧
    2017-04-04

最新評論