函式的定義方式
- function 關鍵字,可以不需要括號
function func_name { command 1 command 2 ... command N }
- 沒有 function 關鍵字,需要括號
func_name() { command 1 command 2 ... command N }
函式的使用方式(呼叫)
- 直接使用函式名呼叫,不需要括號,可以將其想象成 shell 中的一條命令
$ func_name [arg1 arg2 ... argN]
- 函式內部可以直接使用 $1 $2 ... $N
func_name() { echo $1 echo $2 }
函式的返回值
- return 使用 return 返回值只能 返回1~255的整數,通常只是用來供其他地方呼叫獲取狀態,因此通常僅返回0或1, 非零表示失敗
- echo 可以返回任何字串結果,通常用於返回資料,比如一個字串值或者列表值
全域性變數與區域性變數
-
全域性變數
- 不做特殊宣告,Shell 中變數都是全域性變數
- Tips:大型指令碼程式中慎用全域性變數
vim test_local1.sh
#!/bin/bash var1="Hello World" function test { var2=120 }
[wonbin@localhost shell]$ sh test_local.sh Hello World // 為空 因為test 函式沒有執行 [wonbin@localhost shell]$
vim test_local2.sh
#!/bin/bash
var1="Hello World"
function test {
var2=120
}
echo $var1
echo $var2
test // var2 變成全域性變數
echo $var1
echo $var2
function test2 {
echo $var1
echo $var2
}
test2
執行結果
[wonbin@localhost shell]$ sh test_local2.sh
Hello World
Hello World
120
Hello World
120
[wonbin@localhost shell]$
- 區域性變數
- 定義變數時,使用 local 關鍵字
- 若函式內外存在同名變數,則函式內部覆蓋外部變數
vim test_local3.sh
#!/bin/bash
var1="Hello World"
function test {
local var2=120 // 僅在函式內部有效
}
test
echo $var1
echo $var2
執行結果
[wonbin@localhost shell]$ sh test_local3.sh
Hello World
[wonbin@localhost shell]$
函式庫
為什麼要定義函式庫,將一些通用的功能封裝起來,方便其他用到的地方呼叫
- 經常使用到的重複程式碼封裝成函式檔案
- 一般不直接執行,而是其他指令碼呼叫
本作品採用《CC 協議》,轉載必須註明作者和本文連結