在linux下, 通過指令碼執行一些命令, 通常需要執行好幾個指令碼共同完成任務, 這裡的呼叫有3種方式:
這是最常用的方式, 直接通過: /path/xx.sh 就可以啦。
task.sh:
#!/bin/shell
/export/home/baijiwei/run.sh
這裡, task.sh本身啟動了乙個程序, 假設程序id為10000,它會啟動乙個新的shell 來執行run.sh, 假設其程序id為10001, 這裡程序10001 繼承了10000所有的環境變數, 但是程序10001 本身的環境變數10000不能使用;
在整個過程, 程序10000 和10001同時存在, 直到程序10001執行完畢。
task.sh:
#!/bin/shell
exec /export/home/baijiwei/run.sh
...
與前面的fork方式類似, 不同點在於: 經過exec啟動的程序, 不會產生新的程序, 而是直接使用task.sh的程序, 但是在run.sh執行結束返回之前, task.sh會一直被block著。
task.sh:
#!/bin/shell
source /export/home/baijiwei/run.sh
...
它會為run.sh新產生乙個shell, 而且task.sh可以使用run.sh裡面的變數和環境變數;
通過下面的**來展示一下他們的異同:
方式產生子shell
共享sub-shll的變數
fork是否
exec否是
source是是
linux shell 程式設計 10 指令碼中呼叫指令碼
在shell指令碼中呼叫另乙個指令碼的三種不同方法 fork,exec,source 1 fork 呼叫指令碼 fork directory script.sh fork是最普通的,就是直接在指令碼裡面用 directory script.sh來呼叫script.sh這個指令碼.執行的時候開乙個su...
python 中執行linux shell指令碼
subprocess.popen command,shell true 如果command不是乙個可執行檔案,shell true不可省。最簡單的方法是使用class subprocess.popen command,shell true popen類有popen.stdin,popen.stdou...
linux shell環境以及shell指令碼
1.的區別,中的變數會被解析 中所有的都被當成字串 執行系統命令 2.自定義的變數預設是區域性變數,環境變數是全域性變數。3.export可以把乙個或者多個變數設定為全域性變數 4.父shell中要使用子shell中的變數,必須用export將變數設定為全域性變數 5.常用的環境變數 6.使用者工作...