shell实例第19讲:一个脚本中调用另一个脚本的3种方法
生活随笔
收集整理的這篇文章主要介紹了
shell实例第19讲:一个脚本中调用另一个脚本的3种方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在Shell腳本中調(diào)用另一個腳本(3種方法)
準備:主腳本是second.sh,主腳本中調(diào)用first.sh
方法1:exec(1)執(zhí)行方式:exec /home/weibo/shell_test/second.sh(2)特點: 1)運行主腳本時不會新開一個子shell來執(zhí)行被調(diào)用腳本first.sh,被調(diào)用的腳本與主腳本在同一個Shell內(nèi)執(zhí)行,所以被調(diào)用的腳本中聲明的變量和環(huán)境變量, 都可以在主腳本中進行獲取和使用。2)使用exec調(diào)用一個新腳本以后, 父腳本中exec行之后的內(nèi)容就不會再執(zhí)行 方法3:source(1)執(zhí)行方式:source /home/weibo/shell_test/first.sh(2)特點: 1)同exec的特點1,即運行主腳本時不會新開一個子shell來執(zhí)行被調(diào)用腳本first.sh,被調(diào)用的腳本與主腳本在同一個Shell內(nèi)執(zhí)行。2)使用source調(diào)用一個新腳本以后, 主腳本中exec行之后的內(nèi)容還會執(zhí)行 方法3:fork(1)執(zhí)行方式:在主腳本中寫所要調(diào)用腳本的路徑,比如/home/weibo/shell_test/first.sh(2)特點:1)運行主腳本時會新開一個子shell來執(zhí)行腳本first.sh;2)子shell執(zhí)行的時候,父shell還在;3)子shell執(zhí)行完畢后返回父shell,但是子shell中的環(huán)境變量不會帶回父shell主腳本second.sh
#!/bin/bash #作者:魏波 #時間:2017.3.4A=100 echo "before exec/source/fork: PID for second.sh = $$" export A echo "In second.sh: variable second_variable=$A" case $1 in--exec)echo -e "==>>> using exec start\n"exec /home/weibo/shell_test/first.sh ;;--source)echo -e "==>>> using source start\n". /home/weibo/shell_test/first.sh ;;--fork)echo -e "==>>> using fork start\n"/home/weibo/shell_test/first.sh ;; esac echo "after exec/source/fork: PID for second.sh = $$" echo -e "In second.sh: variable second_variable=$A\n"被調(diào)腳本first.sh
#!/bin/bash #作者:魏波 #時間:2017.3.4echo "PID for first.sh = $$" echo "In first.sh get variable second_variable=$A from second.sh" A=200 export A echo -e "In first_variable.sh: variable first_variable=$A\n"注:這兩個腳本中的參數(shù) $$ 用于返回腳本的 PID , 也就是進程 ID。這個例子是想通過顯示 PID 判斷兩個腳本是分開執(zhí)行還是同一進程里執(zhí)行,也就是是否有新開子 Shell。chmod +x first.sh second.sh 給兩個腳本加上可執(zhí)行權(quán)限后執(zhí)行。
?
執(zhí)行結(jié)果:
1、驗證方法1:exec
2、 驗證方法2:source
3、 驗證方法3:fork
?
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的shell实例第19讲:一个脚本中调用另一个脚本的3种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell实例第18讲:利用gzexe加
- 下一篇: KPI与OKR的区别