Shell中函式的定義和使用

kunkliu發表於2020-04-05

轉載地址:https://blog.csdn.net/zbw18297786698/article/details/77802037/

和其他語言一樣,在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

程式碼呼叫結果

[root@VM_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 $?

函式的呼叫

[root@VM_156_149_centos shell]# sh sum.sh 
26

函式返回值大於0-255,出錯的情況

在上面的執行結果可以看到,所傳遞的兩個數的和被成功的返回。但是通過return只能返回整數值,並且是0-255的範圍,如果超出這個範圍就會錯誤的結果。例如將上面的程式碼換成下面的引數

sum 253 4

則執行結果如下,

[root@VM_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 "

函式的呼叫

[root@VM_156_149_centos shell]# sh length.sh  
The string's length is 6 

相關文章