Shell中函式的定義和使用
阿新 • • 發佈:2018-12-30
函式的定義
在Shell中可以通過下面的兩種語法來定義函式,分別如下:
function_name ()
{
statement1
statement2
....
statementn
}
或者
function function_name()
{
statement1
statement2
....
statementn
}
函式的呼叫
當某個函式定義好了以後,使用者就可以通過函式名來呼叫該函數了。在Shell中,函式呼叫的基本語法如下,
function_name parm1 parm2
下面定義了一個 sayhell()的方法,並呼叫
#! /bin/bash function sayhello() { echo "Hello,World" } sayhello
程式碼呼叫結果
[[email protected]_156_149_centos shell]# sh hello.sh
Hello,World
函式的返回值
首先,使用者利用return來返回某個數值,這個與絕大部分的程式設計語言是相同的。但是 在Shell中,return語句只能返回某個0-255之間的整數值。在Shell中還有一種更優雅的方法幫助使用者來獲得函式執行後的某個結果,那就是使用echo。在函式中,使用者需要將要返回的資料寫入到標準輸出(stout),通常這個操作是使用echo語句來完成的,然後在呼叫程式中將函式的執行結果賦值給一個變數。這種做法實際上就是一個命令替換的一個變種。
函式使用return返回值
函式的定義
#! /bin/bash
function sum()
{
returnValue=$(( $1 + $2 ))
return $returnValue
}
sum 22 4
echo $?
函式的呼叫
[[email protected]_156_149_centos shell]# sh sum.sh
26
函式返回值大於0-255,出錯的情況
在上面的執行結果可以看到,所傳遞的兩個數的和被成功的返回。但是通過return只能返回整數值,並且是0-255的範圍,如果超出這個範圍就會錯誤的結果。例如將上面的程式碼換成下面的引數
sum 253 4
則執行結果如下,
[[email protected]_156_149_centos shell]# sh sum.sh
1
可以發現,正確的結果應該是257,但是函式的返回值是1.
函式使用echo返回值
函式的定義
#! /bin/bash
function length()
{
str=$1
result=0
if [ "$str" != "" ] ; then
result=${#str}
fi
echo "$result"
}
len=$(length "abc123")
echo "The string's length is $len "
函式的呼叫
[[email protected]_156_149_centos shell]# sh length.sh
The string's length is 6