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指令碼。