1. 程式人生 > >Shell中函式的定義和使用

Shell中函式的定義和使用

函式的定義

在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