函數是程序的基本構造部分。AWK 允許我們自定義函數。事實上,大部分的程序功能都可以被切分成多個函數,這樣每個函數可以獨立的編寫與測試。函數不僅提高了代碼的復用度也提高代碼的魯棒性。
下面是用戶自定義函數的一般形式:
function function_name(argument1, argument2, ...)
{
function body
}
上述定義函數的語法中:
function_name 是用戶自定義函數的名稱。函數名稱應該以字母開頭,其后可以是數字、字母或下劃線的自由組合。AWK 保留的關鍵字不能作為用戶自定義函數的名稱。
自定義函數可以接受多個輸入參數,這些參數之間通過逗號分隔。參數并不是必須的。我們也可以定義沒有任何輸入參數的函數。
function body 是函數體部分,它包含 AWK 程序代碼。
下面我們實現了兩個簡單函數,它們分別返回兩個數值中的最小值和最大值。我們在主函數 main 中調用了這兩個函數。 文件 functions.awk 內容如下:
\# Returns minimum number
function find_min(num1, num2)
{
if (num1 < num2)
return num1
return num2
}
\# Returns maximum number
function find_max(num1, num2)
{
if (num1 > num2)
return num1
return num2
}
\# Main function
function main(num1, num2)
{
# Find minimum number
result = find_min(10, 20)
print "Minimum =", result
# Find maximum number
result = find_max(10, 20)
print "Maximum =", result
}
\# Script execution starts here
BEGIN {
main(10, 20)
}
執(zhí)行上面的命令可以得到如下的結果:
Minimum = 10
Maximum = 20