1、概念
Shell腳本是利用shell的功能所寫的一個程序“程序”,這個程序是使用純文本文件,將一些shell的語法與命令(含外部命令)寫在裏面,搭配正則表達式、管道命令與數據流重定向等功能,以達到我們所要的處理目的。
簡單記就是:
Shell語法與命令 [ + 正則表達式 + 管道命令 + 數據流重定向 ]
2、腳本執行方式(source,sh script,./script)的區別
下面先給出兩幅圖:
從上圖可以看出,不同的script執行方式會造成不一樣的結果。尤其對bash的環境影響很大。
當我們使用直接命令執行(不論是絕對路徑/相對路徑還是$PATH內),或者利用bash(或sh)來執行腳本時,該script都將會使用一個新的bash環境來執行腳本內的命令。如圖a)所示,也就是說,使用這種方式執行腳本時,其實腳本是在子進程的bash內執行的。當子進程執行完成後,子進程內的各項變量或者操作將會結束而不會傳回到父進程中。
當我們使用source來執行腳本時,腳本是在父進程鍾執行的。如圖b)所示,也就是說該script與執行腳本的進程是同一個進程。因此,當腳本執行完成後,各項操作都會在原本的bash內繼續生效。
3、誤操作
千萬不要企圖在腳本中寫入sudo su語句以通過這種方式切換到root來執行需要root才能執行的特殊操作。
如果真這麼操作了的話會出現當執行完該條語句後,腳本就執行結束了,後面的腳本語句將不會得到執行。
參考:
1、鳥哥的私房菜 基礎篇