函式可以讓我們將乙個複雜功能劃分成若干模組,讓程式結構更加清晰,**重複利用率更高。像其他程式語言一樣,shell 也支援函式。shell 函式必須先定義後使用。
shell 函式的定義格式如下:
function function_name ()
其中function
關鍵字是可選的。
#!/bin/bash
hello()
hello
執行結果:
hello
呼叫函式只需要給出函式名,不需要加括號。
函式返回值,可以顯式增加return語句;如果不加,會將最後一條命令執行結果作為返回值。
#!/bin/bash
function hello()
hello
執行結果:
line 4: return: hello: numeric argument required
如果一定要讓函式返回字串,那麼可以先定義乙個變數,用來接收函式的計算結果,指令碼在需要的時候訪問這個變數來獲得函式返回值。
#!/bin/bash
function hello()
str=hello
echo $str
執行結果:
hello
像刪除變數一樣,刪除函式也可以使用unset
命令,不過要加上.f
選項,如下所示:
$unset .f function_name
如果你希望直接從終端呼叫函式,可以將函式定義在主目錄下的 .profile 檔案,這樣每次登入後,在命令提示符後面輸入函式名字就可以立即呼叫。
在shell中,呼叫函式時可以向其傳遞引數。在函式體內部,通過$n
的形式來獲取引數的值,例如,$1
表示第乙個引數,$2
表示第二個引數...這就是前面講的特殊變數。
#!/bin/bash
function sum()
sum 1 3 5 6
執行結果:
4 params! it's too much!
注意,$10
不能獲取第十個引數,獲取第十個引數需要$
。當n>=10
時,需要使用$
來獲取引數。
另外,還有幾個特殊變數用來處理引數,前面已經提到:
特殊變數 說明
$# 傳遞給函式的引數個數。
$* 顯示所有傳遞給函式的引數。
$@ 與$*相同,但是略有區別,請檢視shell特殊變數。
$? 函式的返回值。
shell指令碼學習系列教程github:
Shell指令碼學習筆記 函式
和c語言類似,shell中也有函式的概念,但是函式定義中沒有返回值和引數列表。在定義myfunc 函式時並不執行函式體中的命令,就像定義變數一樣,只是給myfunc這個名字乙個定義,到後面呼叫myfunc函式時,才執行函式體中的命令。注意 shell中的函式呼叫不寫括號。shell中的函式必須先定義...
Shell 指令碼學習筆記九 Shell函式
函式的定義格式 function funname 1 可以帶function fun 定義,也可以直接fun 定義,不帶任何引數 2 引數返回,可以顯示加 return 返回,如果不加,將以最後一條命令執行結果,作為返回值。return後跟數值n 1 沒有 return 語句的函式 demofun ...
SHELL指令碼函式
shll作為指令碼語言,也有自己的函式。但是他有許多與其他語言不同的特點 在這裡,定義了乙個函式,有2個引數,第乙個 陣列,第二個 單個值。這個函式的作用是判斷第二個引數的值是否在第乙個引數 陣列 裡面。bin sh 定義函式 fun function contain do ta array ech...