雜集:linux中執行shell腳本的三種方式,注意與source區別

Linux中執行Shell腳本的三種方法

1、 腳本文件路徑[需要腳本有執行[x]權限]

2、 bash 腳本文件路徑[當腳本沒有執行權限or或者腳本文件未指定解釋器,推薦使用]

3、 source/. 腳本文件路徑

以上的路徑可以是絕對/相對路徑。

注意!!!:

source/.是在當前Shell中執行腳本文件

1 and 2是產生一個子Shell來執行腳本文件

知道這點對以後編寫腳本及排錯有很大的作用,下面有案例。

測試[x]權限:

創建一個demoShell文件

雜集:linux中執行shell腳本的三種方式,注意與source區別

簡單打印點東西

雜集:linux中執行shell腳本的三種方式,注意與source區別

查看demoShell文件權限

文件目前是沒有x權限

雜集:linux中執行shell腳本的三種方式,注意與source區別

方式2執行

注意:

不限於bash,可以是系統內支持的所有shell

查看系統支持的shell

雜集:linux中執行shell腳本的三種方式,注意與source區別

測試

如下圖可以執行

絕對/相對路徑皆可

雜集:linux中執行shell腳本的三種方式,注意與source區別

方式3執行

絕對/相對路徑皆可

source demoShell

. demoShell

可以執行

雜集:linux中執行shell腳本的三種方式,注意與source區別

方式1執行

絕對/相對皆可

./demoShell

/root/General/myShell/demoShell

Permission denied:是因為方式1需要x權限

雜集:linux中執行shell腳本的三種方式,注意與source區別

修改文件權限

給u[user]賦予執行的權限

chmod u+x demoShell

雜集:linux中執行shell腳本的三種方式,注意與source區別

測試

如下圖可以執行

雜集:linux中執行shell腳本的三種方式,注意與source區別

測試方式3和方式1、2的不同之處:

下面咱們稍微規範一下

vim demoShell

以下操作就是打印name變量

雜集:linux中執行shell腳本的三種方式,注意與source區別

在當前shell給name變量賦值

name='odysee'

注意:=兩邊不要有空格

雜集:linux中執行shell腳本的三種方式,注意與source區別

方式1、2、3執行

雜集:linux中執行shell腳本的三種方式,注意與source區別

是不是發現有些許不同了,方式1、2 name為空,方式3可以正常打印。

這就是上面談到的,方式3[source/.]是在當前shell執行,而方式1、2是產生一個子進程shell,

子shell是無法獲取當前[父]shell的值。

可以簡單的把子shell和當前shell理解成內存中的A和B,A是無法獲取B中的name。

大家以後在編寫shell時一定要注意這點!

歡迎大家給予寶貴的意見或者建議

歡迎大家補充或者共享一些其他的方法

感謝支持


分享到:


相關文章: