本篇 ShengYu 介紹 Shell Script function 函式寫法,腳本寫多了自然有很多邏輯是重複的,這時候就可以用 function 將這些重複邏輯抽取出來放在一個函式裡,提昇程式碼的重複利用性,另一方面是邏輯太複雜時,適時地包裝成函式能夠提昇程式的易讀性,在多人開發的環境下很能夠體會這件事。
以下的 Shell Script function 函式用法與範例將分為這幾部分,
- Shell Script function 函式基本寫法
- Shell Script function 傳遞參數
- Shell Script function 回傳值
- Shell Script function 回傳字串
以下就開始介紹 Shell Script function 函式寫法吧!
Shell Script function 函式基本寫法
Shell Script 最簡單的 function 函式寫法如下,每個函式名稱前面有個 function
關鍵字表示這邊是函式,1
2
3
4
5
6
7
function myfunc() {
echo "hello world"
}
myfunc
輸出如下,1
hello world
沒有寫 function
關鍵字也可以,1
2
3
4
5
6
7
myfunc() {
echo "hello world"
}
myfunc
Shell Script function 傳遞參數
Shell Script function 要傳遞參數的用法如下,用 "$1"
來取出第一個參數,用 "$2"
來取出第二個參數,依此類推,1
2
3
4
5
6
7
8
9
10
11
12
function myfunc1() {
echo "myfunc1 $1"
}
function myfunc2() {
echo "myfunc2 $1 $2"
}
myfunc1 "aaa"
myfunc2 "aaa" "bbb"
輸出如下,1
2myfunc1 aaa
myfunc2 aaa bbb
Shell Script function 回傳值
Shell Script function 用 return
關鍵字來回傳值,return 只能回傳數字,$?
代表 function 的回傳值,1
2
3
4
5
6
7
8
function myfunc() {
return 5
}
myfunc
echo Return value is $?
輸出如下,1
Return value is 5
根據上述例子,我們可以來作個加法的函式,然後傳回結果值,範例如下,1
2
3
4
5
6
7
8
9
10
11
12
13
function myadd() {
return $(($1+$2))
}
myadd 3 4
retval=$?
echo "Return value is $retval"
myadd 6 8
retval=$?
echo "Return value is $retval"
輸出如下,1
2Return value is 7
Return value is 14
Shell Script function 回傳字串
基本上 Shell Script function 是無法用 return
關鍵字來回傳字串的,但是可以透過其它方式來回傳字串,方法如下,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function myfunc1() {
echo "myfunc1: hello world"
}
function myfunc2() {
local retval="myfunc2: hello world"
echo "$retval"
}
val1=$(myfunc1)
echo "val1=$val1"
val2=$(myfunc2)
echo "val2=$val2"
輸出如下,1
2val1=myfunc1: hello world
val2=myfunc2: hello world
以上就是 Shell Script function 函式的用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!
下一篇介紹 讀取 txt 文字檔
其它參考
How to Return a String from Bash Functions – Linux Hint
https://linuxhint.com/return-string-bash-functions/
其它相關文章推薦
Shell Script 新手入門教學
Shell Script 四則運算,變數相加、相減、相乘、相除
Shell Script if 條件判斷
Shell Script for 迴圈
Shell Script while 迴圈
Shell Script 讀檔,讀取 txt 文字檔