2.1 什麼是shell
- 解釋型語言,不適合用來完成對執行時間比較挑剔或者處理器符合比較大的工作
- shell是一個做為使用者與UNIX系統之間的操作介面的程式,檔案的重新導向只要使用"<"和"》"就行,管道用一個"|"就能代表,子進程的輸出是"$(...)",所有這些的具體細節都早已為使用者準備好了。
2.2 管道和重新導向
2.2.1 對輸出資料進行重新導向
- $ls -l > lsoutput.txt,這條命令將ls命令的輸出儲存到一個名為lsoutput.txt的檔案裡去
- $ps >> lsoutput.txt,這條命令將把ps命令的輸出追加到檔案尾部
- 檔案描述符0代表一個程式標準輸入,檔案描述符1代表一個程式標準輸出,而檔案描述符2代表一個程式標準錯誤輸出
2.2.2 對輸入資料進行重新導向
- 不僅能重新導向輸出資訊,還可以重新導向輸入資料,如$ more < killout.txt
2.2.3 管道
- 可以用管道操作符"|"把進程串連在一起,UNIX不同於DOS,用管道串連在一起的進程可以同時運行,並會隨著資料流在它們之間的流動而自動協調
2.3 可以被視為程式設計語言的shell
2.3.1 互動式程式
2.3.2 編寫指令碼程式
- 程式中的注釋以一個"#"符號開始,一直持續到該行的結束
- 在shell程式設計裡,exit命令返回"0"表示成功
- UNIX一般很少通過檔案的副檔名來確定檔案的類型,可以完全省略".sh",或者給它加上一個不同的副檔名,shell是不關心的,要想知道它們是否是指令碼程式,最好的方法就是使用file命令,比如 "file first.sh"
2.3.3 把指令碼設定為可執行程式
- 用chmod命令對已寫好的指令檔的狀態(mode)進行修改,是這個檔案能夠被全體使用者執行,$ chomd +x first.sh
2.4 shell程式設計的文法
2.4.1 變數
- 在shell裡,使用變數之前並不需要事先對它們做出聲明。在預設情況下,所有變數都被認為是並儲存為字串,即使它們被賦值為數值時也是如此。shell和其它一些工作程式會把"數值"型字串依次轉換為正確的數值,並且按照正確的方式對它們進行操作。
- 因為UNIX是一個區分字母大小寫系統,shell中依舊如此
- 在
shell裡,在變數名前面加上一個"$"字元就可以獲得它的內容,echo命令就可以輸出它的內容。只要用到變數,我們就可以在它前面加上一個"$"字
符,除非我們是在對該變數進行賦值操作。注意,如果字串裡包含著空格,就必須用引號把它們括起來,還要注意等號兩邊不能有空格。
$salutation=Hello
$echo $salutation
Hello
$salutation="Year Dear"
$echo $salutation
Year Dear
$salutation=7+5
$echo $salutation
7+5
2.4.2 條件測試
2.4.3 控制結構
2.4.4 函數
2.4.5 命令
2.4.6 命令的執行
2.4.7 即時文檔
2.4.8 調試指令碼程式
2.5 shell程式設計樣本
2.5.1 工作需求
2.5.2 設計
2.6 本章總結