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