LINUX shell 下面呼叫指令碼的3種方式

2021-09-11 01:24:19 字數 858 閱讀 5150

在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.使用者工作...