1. 程式人生 > >鳥哥的 Linux私房菜讀書筆記--shell scripts(程式化指令碼)

鳥哥的 Linux私房菜讀書筆記--shell scripts(程式化指令碼)

1、關於shell scripts

shell scripts是利用 shell的功能寫的一個程式program,這個程式是使用純文字文,將一些shell的語法與指令(含外部指令)寫在裡面,搭配正則表示法、管線命令與資料流重導向等功能,以達到我們想要的處理目的。其中shell是指文字介面底下可以使我們與系統溝通的一個工具介面;scripts是指令碼劇本的意思。

shell scripts 的作用

(1)自動化管理的重要依據

(2)追蹤與管理系統的重要工作

(3)簡單入侵檢測功能

(4)連續指令單一化(將所有指令放入檔案中,執行檔案即執行所有指令)

(5)簡易的資料處理

(6)跨平臺支援與學習歷程較短

2、scripts 的撰寫與執行

shell scripts本質是純文字文件,通過被編輯檔案,來使其一次執行多個指令。

注意事項:(1)指令的執行時自上而下,從左到右進行分析與執行

(2)指令、選項與引數間的多個空白都會被忽略掉

(3)空白行也被忽略。並且有tab鍵產生的空白也將被忽略

(4)如果讀取到一個enter符號(CR),就嘗試執行該命令

(5)如果一行的內容太多,則可以使用   \enter   來延伸至下一行

(6)  #   可作為批註,加在#後面的內容被在執行過程中被忽略

執行shell scripts檔案的方法:

(1)直接下達指令:shell.sh必須具備可讀可執行(rx)許可權。

             絕對路徑:使用檔案路徑來下達指令

             相對路徑:在相對目錄下使用./檔名來進行執行檔案

             變數PATH功能:將shell.sh放在PATH指定的目錄中,例如:~/bin/

(2)以bash程式來執行:透過bash  shell.sh   或   sh shell.sh(/bin/sh是/bin/bash的連線檔)來執行。

<1>第一個scripts

解釋:

(1)第一行#!/bin/bash用來說明該scripts使用的shell名稱,因為我們使用的是bash,所以必須要以#!/bin/bash來宣告該檔案內使用的是bash語法,由此在程式被執行時,才可以載入bash的相關環境配置檔案(一般來說是non-login shell的~./bashrc)並且執行bash來使我們底下的指令能夠執行(很多情況下,如果沒有設定好該行,程式可能無法執行,因為系統無法判斷用什麼shell來執行)

(2)除第一行的宣告shell之外,其餘帶#號的語句都是用作批註用途。

         建議養成說明scripts:其中說明內容包含:內容與功能、版本資訊、作者資訊、建檔日期、歷史記錄等。有助於未來程式該寫的debug。

(3)主要環境變數的宣告

建議務必將必要的環境變數 設好,其中PATH與LANG是最重要的。

(4)主要程式部分

上例中的echo部分

(5)執行結果告知

在前面的學習中,我們知道可以使用$?來進行指令是否成功執行,同樣我們也可以使用exit來使程式中斷,並且回傳一個數值給系統,本例中使用exit 0,代表離開scripts並且回傳一個0給系統,當執行完scripts時,下達指令echo  $? 就可以得到0值。同樣我們可以自定義錯誤資訊,利用回傳值來進行判斷錯誤。

編寫好scripts後通過命令:$  sh  hello.sh來進行執行。另外還可以利用$  chmod  a+x  hello.sh;./hello.sh

3、編寫scripts 的規範

(1)在檔案開頭記錄好scripts的功能、版本資訊、作者與聯絡方式、版權宣告方式、歷史記錄、較為特殊的指令使用絕對路徑的方式進行下達、運作時需要的環境 變數預先宣告與設定。