Shell指令碼的執行方式

2021-06-19 01:14:20 字數 1266 閱讀 3227

註明:wd代表「指令碼儲存的目錄」

1.fork

語法:/wd/shell.sh

fork是最普通的, 就是直接在指令碼裡面用/wd/shell.sh來呼叫shell.sh這個指令碼.執行的時候開乙個子shell執行呼叫的指令碼,子shell執行的時候, 父shell還在。子shell執行完畢後返回父shell。子shell從父shell繼承環境變數.但是子shell中的環境變數不會帶回父 shell

2.exec

語法: exec /wd/shell.sh

exec與fork不同,不需要新開乙個sub-shell來執行被呼叫的指令碼. 被呼叫的指令碼與父指令碼在同乙個shell內執行。但是使用exec呼叫乙個新指令碼以後, 父指令碼中exec行之後的內容就不會再執行了。這是exec和source的區別。

3.source 

語法:source /wd/shell.sh

與fork的區別是不新開乙個子shell來執行被呼叫的指令碼,而是在同乙個shell中執行。所以被呼叫的指令碼中宣告的變數和環境變數, 都可以在主指令碼中得到和使用。

4.()

語法:( 語句;語句;語句;…… )

圓括號中命令列表的命令將會執行在乙個子shell中。

比如:$ (cd ..;ls -l)

cd ..命令改變的是子shell的pwd,而不會影響到互動式shell。

然而命令

$ cd ..;ls -l

則有不同的效果,cd ..命令是直接在互動式shell下執行的,改變互動式shell的pwd,然

而這種方式相當於這樣執行shell指令碼:

$ source ./script.sh

或者$ . ./script.sh

source或者.命令是shell的內建命令,這種方式也不會建立子shell,而是直接在互動式shell下逐行執行指令碼中的命令。

source命令、.命令

語法: . filename [arguments]

source filename [arguments]

作用:當在命令 行中呼叫的時候, 這個命令將會執行乙個指令碼. 當在指令碼中呼叫的時候, source file-name 將會載入file-name檔案, 或者 . (點命令)乙個檔案將會在指令碼中引入**, 並將這些**附加到指令碼中(與c語言中的#include指令效果相同). 最終的結果就像是在使用"source"的行上插入了相應檔案的內容. 

在多個指令碼需要引用相同的資料, 或者需要使用函式庫的情況下, 這個命令非常有用.

5.{}

不會啟動子shell。

shell指令碼執行方式

echo輸出命令 echo 選項 輸出內容 選項 e 支援反斜線控制的字元轉換 shell指令碼 指令碼都以.sh結束,指令碼第一行 bin bash 以hello.sh簡單指令碼為例 指令碼執行有兩種方法 這裡出現了no such file or directory 原因是格式不匹配,解決方案 d...

shell 指令碼的執行方式

執行shell指令碼的方式基本上有三種 1 輸入定向到shell指令碼 這種方式是用輸入重定向方式讓shell從給定檔案中讀入命令列並進行相應處理。其一般形式是 bash 指令碼名 例如 bash 2 以指令碼名作為引數 其一般形式是 bash 指令碼名 引數 例如 bash ex2 usr men...

執行Shell指令碼的方式

執行shell指令碼的方式基本上有三種 1 輸入定向到shell指令碼 這種方式是用輸入重定向方式讓shell從給定檔案中讀入命令列並進行相應處理。其一般形式是 bash 指令碼名 例如 bash shell從檔案ex1中讀取命令列,並執行它們。當shell到達檔案末尾時就終止執行,並把控制返回到s...