05 Shell指令碼學習 函式

2021-09-08 18:16:41 字數 1551 閱讀 2676

函式可以讓我們將乙個複雜功能劃分成若干模組,讓程式結構更加清晰,**重複利用率更高。像其他程式語言一樣,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...