八使用Shell函數
阿新 • • 發佈:2018-05-03
ont 字母 再次 ash 函數定義 簡潔 子shell XP 生成
在Shell腳本中,將一些需要重復使用的操作,定義為公共的語句塊,即可稱為函數
使用函數的好處?
使腳本代碼更簡潔,增強易讀性
提高Shell腳本的執行效率
函數定義方法
基本格式1
function 函數名 {
函數的功能體
}
格式2:
函數名() {
函數的功能體
}
註:定義函數名,不會被輸出
使用函數時的規則:
先定義後調用;可以只定義不調用 在同一個腳本裏,函數名相同時,後定義生效 函數名區分字母大小寫 在函數體內定義的變量是局部變量,只能在當前函數內使用 在函數體外定義的變量是全局變量,全局變量所有函數都可以使用 函數之間可以互相調用 定義一次,可多次重用 Bash調用函數時不會開啟新的子Shell,會在現有的shell環境中執行該函數
在fun.sh腳本裏定義函數sum.two(功能是輸出數字10 和20 相加的和,並輸出計算結果)
[root@localhost shell]# cat sum_two.sh #!/bin/bash sum_two(){ sum=`expr 10 + 20` echo "10 +20 = $sum " } sum_two
在腳本中建一個對2個整數求和的加法器
[root@localhost shell]# cat funadder.sh #!/bin/bash adder(){ echo $(($1+$2)) } adder12 34 adder 56 789
服務腳本中的函數
適用於復雜的啟動/終止控制操作
方便在需要時多次調用
遞歸調用示例
Shell版的fork炸彈
僅13個字符:.(){.|.& };.
遞歸死循環,可迅速耗盡系統資源
無限的生成新的進程,造成死機
代碼解析
.() #定義一個名為.的函數 { #函數塊的開始標記 .|.& #在後臺遞歸調用函數. ; #函數塊的結束標記 . #再次調用函數
函數可以遞歸調用(函數自己調用自己)
八使用Shell函數