定義函式的格式:
name ()
command-list;
呼叫函式的格式:
name #省略括號
檢視到所宣告的函式定義:
declare –f name
取消定義的函式,可以使用unset命令:
unset name
案例:#!/bin/bash
#定義函式printmsg用來輸出資訊到終端螢幕,該函式至少需要兩個引數
printmsg()
#定義函式logmsg用來記錄資訊到log檔案,該函式至少可以接收乙個引數
logmsg()
#通過兩個引數呼叫函式printmsg,如果函式以非零值退出,才會呼叫logmsg函式
#由於指定了足夠的引數,printmsg函式會返回成功值0,所以logmsg不會被呼叫
printmsg "from printmsg()" "it works..." "aabbcc" && logmsg "from logmsg()" "it works...."
注意:1 如果定義的函式名與bash內建的命令相同,則這個函式會覆蓋內建命令。
本地變數:在函式內部所定義的變數只能在函式內部使用。變數前加了
local。
全域性變數:可以在指令碼內任何地方使用。
解讀:為了程式不混亂,盡量使用本地變數,命名更具有描述性。
遞迴呼叫:函式呼叫本身。
案例:#!/bin/bash
#定義計算階乘的函式recursive,它接收乙個引數
recursive()
#提示使用者輸入整數值做階乘運算,數值小於20是為了防止計算結果超出變數儲存範圍
echo
echo -n " enter a number (<20) to do n! operation (type "quit" to exit): "
read input
#當使用者輸入字串quit時,until迴圈結束,指令碼退出
until [ "$input" = "quit" ]
do #對輸入資料進行匹配
case $input in
#合法的輸入可以是1到9的個位數,或者是10到19的兩位數,還可以是20
[1-9]|[1][0-9]|20)
#呼叫遞迴函式並儲存計算結果
outcome=`recursive "$input"`
echo " after computing,$input!=$outcome"
echo
;; #對所有不合法的輸入進行匹配
*) echo
echo " not a valid number,enter again!"
;; esac
#為下一次階乘運算讀取使用者輸入的資料
echo -n " enter a number(<20) to do n!operation (type "quit" to exit):"
read input
done
echo
echo " bye."
exit 0
函式庫:指的是將通用的函式先定義好乙個指令碼,方便其他指令碼呼叫。
注意:1 不要以#!/bin/bash開始庫檔案,同時給庫檔案新增可執行許可權
2 要在指令碼檔案的一開始執行庫檔案
案例:庫檔案:
#!/bin/echo warning:this is a library which should be sourced!
#上面一行的作用是防止庫檔案被意外執行
#定義函式test_platform用來測試當前的作業系統
test_platform() in
"freebsd" in
platform="freebsd"
;;"sunos"
platform="sunos"
;;"linux"
platform="linux"
;;esac
return 0
}指令碼:
#!/bin/bash
#首先在指令碼程式中包含進庫檔案library.lib從而可以呼叫其中定義的函式
source ./library.lib
#呼叫函式庫中的函式test_platform
test_platform
#輸出函式test_platform中定義的全域性變數platform
echo
echo "our running platform is $platform"
exit 0
第10章 深入函式
1 普通函式的過載 過載的是引數的型別 成員函式的過載 過載的是引數的型別 2 普通函式的預設引數 預設引數 以及成員函式的預設引數 預設引數 過載的是引數的數值 3 過載建構函式 4 成員變數初始化 在函式體中進行賦值或者在建構函式頭進行初始化 常量和引用只能初始化不能進行賦值 5 成員變數初始化...
第10章第8題
mylist.h ifndef mylist h define mylist h include const int len 10 class mylist endif void show double mid 這個函式用於簡單的顯示乙個double mylist.cxx include mylis...
第10章 模糊查詢和聚合函式
use myschool 萬用字元 匹配0 n個任意字元 匹配單個字元 匹配區間內的值 如 13 不匹配區間內的值 模糊查詢 查詢學生表中性 張 的學生記錄 select from student where studentname like 張 select from student where ...