Linux中執行Shell腳本的三種方法
1、 腳本文件路徑[需要腳本有執行[x]權限]
2、 bash 腳本文件路徑[當腳本沒有執行權限or或者腳本文件未指定解釋器,推薦使用]
3、 source/. 腳本文件路徑
以上的路徑可以是絕對/相對路徑。
注意!!!:
source/.是在當前Shell中執行腳本文件
1 and 2是產生一個子Shell來執行腳本文件
知道這點對以後編寫腳本及排錯有很大的作用,下面有案例。
測試[x]權限:
創建一個demoShell文件
簡單打印點東西
查看demoShell文件權限
文件目前是沒有x權限
方式2執行
注意:
不限於bash,可以是系統內支持的所有shell
查看系統支持的shell
測試
如下圖可以執行
絕對/相對路徑皆可
方式3執行
絕對/相對路徑皆可
source demoShell
. demoShell
可以執行
方式1執行
絕對/相對皆可
./demoShell
/root/General/myShell/demoShell
Permission denied:是因為方式1需要x權限
修改文件權限
給u[user]賦予執行的權限
chmod u+x demoShell
測試
如下圖可以執行
測試方式3和方式1、2的不同之處:
下面咱們稍微規範一下
vim demoShell
以下操作就是打印name變量
在當前shell給name變量賦值
name='odysee'
注意:=兩邊不要有空格
方式1、2、3執行
是不是發現有些許不同了,方式1、2 name為空,方式3可以正常打印。
這就是上面談到的,方式3[source/.]是在當前shell執行,而方式1、2是產生一個子進程shell,
子shell是無法獲取當前[父]shell的值。
可以簡單的把子shell和當前shell理解成內存中的A和B,A是無法獲取B中的name。
大家以後在編寫shell時一定要注意這點!
歡迎大家給予寶貴的意見或者建議
歡迎大家補充或者共享一些其他的方法
感謝支持
閱讀更多 程序員日常筆記 的文章