Linux中的Bash函式


簡介

函式是程式碼中將一組指令放在一個地方的部分。像所有其他程式設計或指令碼語言一樣,我們可以在Linux的bash中使用函式。與不使用函式相比,使用函式有很多優點。一些好處是,它易於閱讀或執行程式碼,並且可以在需要時在程式碼中重複使用函式。

儘管bash函式有一些限制,但如果需要,仍然建議在bash指令碼中使用函式。bash函式可以定義兩種方式

  • 在呼叫函式之前,在shell指令碼中定義bash函式。

  • 在終端命令中直接定義bash函式,並從終端呼叫。

讓我們在本文中詳細瞭解一下。

函式語法

以下是在Linux中定義bash函式的不同方法。

  • 使用保留關鍵字function,然後是函式的名稱。

function <function name> {
   <function body…>
}
  • 與場景1類似,但它可以是一行。此處命令末尾需要分號[;]。

function <function name> { <function body…> ; }
  • 不需要function關鍵字,只需使用函式名稱即可。

<function name> {
   <function body…>
}
  • 與場景3類似,但它可以是一行。此處命令末尾也需要分號[;]。

<function name> { <function body…> ; }

現在讓我們嘗試一些bash程式設計來理解bash函式。

方法1:4種函式定義型別

示例

#!/bin/bash

# One line
hello1 () { echo "I am in hello1" ; }

# One line but declaring functions using the reserved word function
function hello2 { echo "I am in hello2"; }


# Multiline
function hello3 {
   echo "I am in hello3" ;
}

# Declaring functions without the function reserved word
# Multiline
hello4 () {
   echo "I am in hello4" ;
}
# Invoking functions
hello1
hello2
hello3
hello4

在此程式中,我們使用不同的樣式定義了四個函式[hello1,hello2,hello3,hello4]。所有方法都是正確的,可以根據使用者的需要使用。

要執行bash指令碼,最好使用以下命令為檔名授予執行許可權。

chmod 777 <bash script file name>

然後像這樣執行bash指令碼

./<filename.sh>

輸出

I am in hello1
I am in hello2
I am in hello3
I am in hello4

方法2:使用“$?”獲取bash函式的返回值

示例

#!/bin/bash

bash_return () {
   echo "I want to return 100"
   return 100
}
bash_return
echo $?

這裡函式“bash_return”返回100,我們透過“$?”變數獲取它。但是,這不是從函式獲取返回值的好方法。因為這會從程式碼中退出。

輸出

I want to return 100
100

方法3:使用全域性變數獲取bash函式的返回值

示例

#!/bin/bash

bash_return_using_global_var () {
   global_var="I am inside global variable"
}

bash_return_using_global_var
echo $global_var

在此程式中,我們使用了一個全域性變數來從函式獲取返回值。

輸出

I am inside global variable

方法4:使用標準輸出獲取bash函式的返回值

示例

#!/bin/bash

bash_return_to_stdout () {
   local bash_return1="10000"
   echo "Inside function -> $bash_return1"
}

bash_return1="$(bash_return_to_stdout)"
echo "$bash_return1"

在此程式中,我們使用區域性變數來儲存函式返回值。此值可以稍後用於任何其他目的。

輸出

Inside function -> 10000

方法5:向bash函式傳遞引數

示例

#!/bin/bash

pass_arg () {
   echo "Here is the argument passed to this function: $1"
}

pass_arg "TUTORIALSPOINT"

這裡我們將第一個引數傳遞給函式。

輸出

Here is the argument passed to this function: TUTORIALSPOINT

方法6:直接在終端中宣告bash函式並從終端呼叫

這裡我們需要開啟一個終端並像下面這樣定義一個函式。然後按回車鍵。

示例

terminal_func () { echo "I am running from terminal"; echo "Thank You"; }

然後在終端中鍵入函式名稱“terminal_func”並按回車鍵。

輸出

I am running from terminal
Thank You

如果我們想刪除bash終端函式,則可以在終端中使用以下命令

unset terminal_func

然後,如果我們嘗試呼叫函式“terminal_func”,我們將收到以下錯誤

terminal_func: command not found

結論

從本文中,我們必須學習bash函式的許多方面,例如以不同的方式定義函式、函式的返回值、傳遞函式引數、從終端執行bash函式。這有助於我們在Linux中編寫簡單高效的bash指令碼。

更新於:2023年3月29日

783 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告