一:
基本上,一個 script 被執行的時候, bash 會據以判斷執行
的步驟爲:
1. 如果讀取到一個 Enter 符號( CR ),就嘗試開始執行該行命令;
2. 如同前面 bash command 提到的,指令間的多個空白會被忽略掉;
3. 而空白行也將被忽略掉!,並且 tab 也是不會被理會的!
4. 至於如果一行的內容太多,則可以使用 / 來延伸至下一行;
5. 此外,使用最多的 # 可做爲批註!任何加在 # 後面的字,將全部被視爲批註文字而被忽略!
二:
在撰寫一個 scripts 的時候,最好養成良好的習慣:
1. 先宣告使用的 shell 爲何?(特別留意這一點,在某些狀況中,例如 /etc/crontab 情況下,如果
沒有宣告使用的 shell ,常常會出現錯誤訊息而導致 scripts 無法被執行呦!)
2. 註明該 script 的內容功能、版本信息、作者、建文件日期等等
3. 每一個大步驟的主要功能(也順便提供自己未來修改之用!)
那麼 scripts 這個檔案要如何來執行呢?執行的方法有兩種:
* 一個是將該檔案改成可以執行的屬性,如chmod 755 scripts.file ,然後執行該檔案;
* 另一種則是直接以 sh 這個執行檔來執行 script 的內容,如 sh scripts.file!
三:
1:卷標與運算符號:declare
declare 【afirx】
-a:定義爲數組
-f:定義爲函數
-i:定義爲整數
-r:定義爲只讀
-x:定義爲透過環境輸出變量
2:
read 的功能就是
『依據您在鍵盤輸入的結果 input 到變量內容中』
3:定義一個 script 的參數的代號
myscript opt1 opt2 opt3 opt4
$0 $1 $2 $3 $4
myscript爲自己shell的文件名,$1,$2,$3,$4爲你執行該shell時候的參數。
$0 : myscript 亦即是 script 的檔名
$1 : opt1 亦即是第一個附加的參數 (parameter)
$2 : opt2
$3 : opt3
四:邏輯判斷式與表達式
1:if then fi 的方式
if [ 條件判斷一 ] && (||) [ 條件判斷二 ]; then <== if 是起始的意思,後面可以接若干個判斷式,使用 && 或 ||
執行內容程序
elif [ 條件判斷三 ] && (||) [ 條件判斷四 ]; then <==第二段的判斷,如果第一段沒有符合就來此搜尋條件
執行第二段內容程序
else <==當前兩段都不符合時,就以這段內容來執行!
執行第三段內容程序
fi <==結束 if then 的條件判斷!
新手常犯的錯誤
1. 在 [ ] 當中,只能有一個判別式;
2. 在 [ ] 與 [ ] 當中,可以使用 && 或 || 來組織判別式
3. 每一個獨立的組件之間『都需要有空格鍵來隔開』!
2:case ...esac 的方式
case 種類方式(string) in <==開始階段,那個種類方式可分成兩種類型,通常使用 $1 這一種直接下達類型!
種類方式一)
程序執行段
;; <==種類方式一的結束符號!
種類方式二)
程序執行段
;;
*)
echo "Usage: {種類方式一|種類方式二}" <==列出可以利用的參數值!
exit 1
esac <==這個 case 的設定結束處!
五:循環
1:* for (( 條件一; 條件二; 條件三 ))
* for variable in variable1 variable2 .....
for有以上兩種表示方法
其中for (( 條件一; 條件二; 條件三))中
* 條件一:這可以看成是『初始值』
* 條件二:這可以看成是『符合值』
* 條件三:這可以看成是『步階』!
2:while...do...done
while:當條件相同的時候,就繼續做!
3:until...do...done
until:直到條件相同的時候才離開程序