shell腳本雜記

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、鳥哥的私房菜 基礎篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章