1、shell函數:shell允許將一組命令集或語句形成一個可用塊,這些塊稱為shell函數。
函數由兩部分組成:函數標題、函數體。
標題是函數名。函數體是函數內的命令集合。
標題名應該唯一;如果不是,將會混淆結果,因為腳本在查看調用腳本前將首先搜索函數調用相應的shell。
2、定義函數的格式為:
函數名(){
命令1
...
}
如果願意,可在函數名前加上關鍵字function,這取決於使用者。
function函數名()
{
命令1
...
}
3、舉例:
例1:刪除文件中的空行
這個腳本(腳本名為del.lines)可以處理一個或多個文件。每個文件在用sed刪除空行之前要先核實是否存在。
sed的輸出被導入一個文件名中含有$ $的臨時文件,最後這個臨時文件又被移回到原來的文件中。
該腳本使用shift命令取得所有的文件名,用while循環逐個處理所有的文件,直至處理完
為止。可以使用del.lines --help獲得一個簡短的幫助
URL:http://www.bianceng.cn/OS/Linux/201410/45912.htm
保存後給腳本文件增加執行權限:chmod +x del.lines
執行腳本進行測試:
注:
1、basename命令能夠從路徑中分離出文件名。通常用於shell腳本中
2、shift語句用於遷移位置變量,將 $1~$9 依次向左傳遞
例如,若當前腳本程序獲得的位置變量如下:
$1=file1、$2=file2、$3=file3、$4=file4
則執行一次shift命令後,各位置變量為:
$1=file2、$2=file3、$3=file4
再次執行shift命令後,各位置變量為:
$1=file3、$2=file4
例2:如果某些日志文件超過了特定的長度(如8K),那麼它的內容將被倒換到另一個文件中,並清除原有文件中的內容.
系統中的有些日志文件增長十分迅速,每天手工檢查這些日志文件的長度並倒換這些日志文件(通常是給文件名加個時間戳)是非常乏味的。可以編寫一個腳本來自動完成這項工作。該腳本將提交給cron進程來運行,如果某個日志文件超過了特定的長度,那麼它的內容將被倒換到另一個文件中,並清除原有文件中的內容。
該腳本中日志文件的長度限制是由變量BLOCK_LIMIT設定的。這一數字代表了塊數目,在本例中是8(塊大小默認為4K)。可以按照自己的需求把這一數字設得更高。所有要檢查的日志文件名都保存在變量LOGS中。
這裡使用了一個for循環來依次檢查每一個日志文件,使用du命令來獲取日志文件長度。
如果相應的文件長度大於BLOCK_LIMIT變量所規定的值,那麼該文件將被拷貝到一個文件
名含有時間戳的文件中,原先的文件長度將被截斷為0。
注:du 並不是顯示文件的實際大小,而是顯示文件所占用的 block 大小,默認linux系統分區的 block size 是4k,也就是說即使文件只有1個字節,也會占用4k.
ls -l則是文件的實際大小。
本文出自 “甘兵” 博客,請務必保留此出處http://ganbing.blog.51cto.com/7002794/1224802