第14課時 函數
14.1 建立和使用函數
格式:name() {list;}
Shell函數的一個重要特徵是:可以用它們代替二進位可執行檔或Shell內建的同名命令。
例如:
cd() {chdir ${1:-$HOME}; PSI="`pwd`$"; export PSI;}
該語句用了一個函數代替了cd命令,該函數改變目錄,同時設定了主Shell提示符$PSI使其包含目前的目錄。
Shell指令碼中的函數變數作用範圍與其他的指令碼語言不通,例如在PHP中,當指令碼執行超出函數範圍時本內部變數就
會消失,所以不刪除也沒有問題。
而Shell中,變數被標識為全域變數,所以必須小心管理。
例如:
$ test(){ test=123; }
$ test
$ echo $test #輸出123
第15課時 文本過濾器
調用Shell指令碼常常是為了對執行的命令所產生的輸出進行操作和格式化。
1)head
2)tail
3)grep
4)sort
5)uniq
6)tr
15.1.1 head和tail命令
格式:head [-n lines] files
如果沒有-n lines,則顯示標準的前10行。
15.1.2 tail命令
格式:tail [-n lines] files
如果沒有-n lines,則顯示標準的最後10行。
-f選項,用於查看進行中寫操作的檔案。
15.2 使用grep
grep命令使使用者可以在檔案中找到包含某個特殊單詞或片語的行。
15.2.1 尋找單詞
格式:
grep word file
這裡檔案file指出想在哪些檔案中搜素單詞word,grep命令顯示檔案中包含單詞word的每一行。
當指定多個檔案時,grep命令在輸出行之前加上包含該行的檔案名稱。
-i選項,大小寫不相關匹配。
15.2.2 從STDIN(標準輸入)中讀入
當沒有指定檔案時,grep在從STDIN輸入的行中尋找匹配,這使得它可以與管道很好地連在一起。
例如:$ who | grep root
-v選項,列出與條件不符的行
15.2.3 行號
選項-n,結果清單返回行號
$ grep -n pipe ch15.doc
返回格式為:file:line number:line
15.2.4 只列出檔案名稱
有時,只需返回含有某word的檔案名稱。
可以使用-l選項。
例如:$ grep -l php *
返回:index.php