函式及指令碼的綜合應用

2021-09-21 03:22:42 字數 1752 閱讀 1838

函式及指令碼的綜合應用1、

shell

函式:shell

允許將一組命令集或語句形成乙個可用塊,這些塊稱為

shell

函式。

函式由兩部分組成:

函式標題、函式體。

標題是函式名。

函式體是函式內的命令集合。

標題名應該唯一;如果不是,將會混淆結果,因為指令碼在檢視呼叫指令碼前將首先搜尋函式呼叫相應的

shell。

2、定義函式的格式為:

函式名()

如果願意,可在函式名前加上關鍵字

function

,這取決於使用者。

function

函式名()

3、舉例:

例1:刪除檔案中的空行

這個指令碼(指令碼名為del.lines)可以處理乙個或多個檔案。每個檔案在用

sed刪除空行之前要先核實是否存在。

sed的輸出被匯入乙個檔名中含有

$ $的臨時檔案,最後這個臨時檔案又被移回到原來的檔案中。

該指令碼使用

shift

命令取得所有的檔名,用

while

迴圈逐個處理所有的檔案,直至處理完

為止。可以使用

del.lines -

-help

獲得乙個簡短的幫助

儲存後給指令碼檔案增加執行許可權: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則是檔案的實際大小。

Nginx部署及綜合應用

nginx是一款輕量級的http伺服器軟體,由俄羅斯的igor sysoev開發。它能夠支援高達50000個併發連線數的響應,擁有強大的靜態資源處理能力,執行穩定,並且系統資源消耗非常低,現已逐漸被越來越多的使用者認可,目前很多大型 都應用nginx伺服器作為後端 程式的反向 及負載均衡器,來提公升...

shell指令碼函式的定義及應用(顏色)

需要知道 shell中的函式 函式是乙個功能,變數是值 函式功能 將所有的功能整合在一塊 可以實現迴圈執行 指令碼,指令碼一般是 的伺服器端程式,主要用於動態 的服務請求響應 故指令碼函式就是寫在指令碼中的特定功能函式了 指令碼中的函式是把乙個複雜的語句塊定義成乙個字串的方法,以後想使用某一功能時直...

mysql的綜合應用 MySQL的綜合應用學習筆記

避免寫入直接運算元據檔案 利用日誌來實現間接寫入 mysql共有5種日誌,其中只能redo日誌和undo日誌與事務有關。事務機制 rdbms sql語句 事務 acid 事務是乙個或者多個sql語句組成的整體,要麼全部執行成功,要麼全部執行失敗。管理事務 預設情況下,mysql執行每條sql語句都會...