source exec 區別(shell 13問中摘出)

來源:互聯網
上載者:User

exec也是讓script在同一個進程上執行,但是原有進程則被結束了

 

指令碼內容:

root@james-desktop:/opt/qt-everywhere/marvell/APP/applications/factory-roast# cat 1.sh
#!/bin/sh
A=B
echo "PID for 1.sh :$$"
export A
echo "1.sh \$A is $A"
case $1 in
        exec)
                echo "using exec..."
                exec ./2.sh;;
        source)
                echo "using source..."
                source ./2.sh;;
        *)
                echo "using fork..."
                ./2.sh;;
esac

echo "PID for 1.sh after run 2.sh: $$"
echo "1.sh \$A is $A"

root@james-desktop:/opt/qt-everywhere/marvell/APP/applications/factory-roast# cat 2.sh
#!/bin/sh
echo "PID for 2.sh :$$"

echo "2.sh get \$A=$A from 1.sh"
A=C
export A
echo "2.sh \$A is $A"

運行結果:

root@james-desktop:/opt/qt-everywhere/marvell/APP/applications/factory-roast# ./1.sh
PID for 1.sh :8152
1.sh $A is B
using fork...
PID for 2.sh :8153
2.sh get $A=B from 1.sh
2.sh $A is C
PID for 1.sh after run 2.sh: 8152
1.sh $A is B

 

root@james-desktop:/opt/qt-everywhere/marvell/APP/applications/factory-roast# ./1.sh source
PID for 1.sh :8158
1.sh $A is B
using source...
PID for 2.sh :8158
2.sh get $A=B from 1.sh
2.sh $A is C
PID for 1.sh after run 2.sh: 8158
1.sh $A is C

 

root@james-desktop:/opt/qt-everywhere/marvell/APP/applications/factory-roast# ./1.sh exec
PID for 1.sh :8159
1.sh $A is B
using exec...
PID for 2.sh :8159
2.sh get $A=B from 1.sh
2.sh $A is C

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.