歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> shell函數和腳本的綜合應用

shell函數和腳本的綜合應用

日期:2017/3/3 15:58:49   编辑:關於Linux

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

Copyright © Linux教程網 All Rights Reserved