本文主要介绍shell script中的函数,包括函数的定义、函数入参、函数返回值、全局变量和局部变量;
1.函数的定义方式
在Shell中,函数使用和其他编程语言类似,使用function
或()
定义函数,然后在需要使用时调用它们。以下是在Shell中创建和使用函数的基本语法:
- 函数名
- 函数的入参
- 函数的返回值
函数定义方式
funcname() { shell commands }
function funcname { shell commands }
function funcname() { shell commands }
1.1 使用function
定义函数
function funcname { shell commands }
function function_name {
# commands
}
# 调用函数
function_name
示例
#!/bin/bash
function fun1
{
echo "fun1"
}
echo "function test begin"
fun1
echo "function test end"
输出
function test begin
fun1
function test end
1.2 使用()
定义函数
funcname() { shell commands }
function_name () {
# commands
}
# 调用函数
function_name
示例
#!/bin/bash
function fun1
{
echo "fun1"
}
fun2()
{
echo "fun2"
}
echo "function test begin"
fun1
fun2
echo "function test end"
输出
function test begin
fun1
fun2
function test end
1.3 使用function ()
定义函数
function funcname() { shell commands }
示例
#!/bin/bash
function fun1 ()
{
echo "fun1"
}
fun2()
{
echo "fun2"
}
echo "function test begin"
fun1
fun2
echo "function test end"
输出
function test begin
fun1
fun2
function test end
2.函数的入参
在Shell中,函数可以接受参数,并且使用$1
,$2
等变量来引用它们。以下是函数定义和调用时使用参数的基本语法:
function_name () {
parameter1=$1
parameter2=$2
# commands
}
# 调用函数,注意需要传递参数
function_name arg1 arg2
示例
#!/bin/bash
function fun1
{
#parameter1=$1
#parameter2=$2
p1=$1
p2=$2
echo $(($p1+$p2))
}
echo "function test begin"
fun1 2 3
echo "function test end"
输出
function test begin
5
function test end
3.函数的返回值
在Shell中,函数可以有返回值。
**整数类型:**在函数中使用return
关键字来返回函数的返回值,通过$?
来接收函数的返回值;
**字符串类型:**在函数中使用echo
来返回函数的返回值,使用$()
来接收函数的返回值;
3.1 整数类型的返回值
function_name () {
# commands
return value
}
# 调用函数并获取返回值
result=$(function_name)
示例
#!/bin/bash
fun1()
{
p1=3
p2=4
r1=$(($p1+$p2))
return $r1
}
echo "function test begin"
fun1
re=$?
echo "result value is: $re"
echo "function test end"
输出
function test begin
result value is: 7
function test end
示例
#!/bin/bash
fun1()
{
p1=$1
p2=$2
r1=$(($p1+$p2))
return $r1
}
echo "function test begin"
fun1 10 20
re=$?
echo "result value is: $re"
echo "function test end"
输出
function test begin
result value is: 30
function test end
3.2 字符串类型的返回值
示例
#!/bin/bash
function fun1()
{
p1=$1
p2=$2
r1=$p1" "$p2
echo $r1
}
echo "function test begin"
#h="hello"
#w="world"
#re=$(fun1 "$h" "$w")
re=$(fun1 "hello" "world")
echo "result value is: $re"
echo "function test end"
输出
function test begin
result value is: hello world
function test end
4.函数的全局变量和局部变量
在Shell中,函数还可以使用变量作为全局变量或局部变量。使用local
关键字来声明局部变量。以下是使用全局和局部变量的示例:
global_var="Hello"
function function_name {
local local_var="World"
echo $global_var $local_var
}
# 调用函数
function_name # 输出 "Hello World"
示例
#!/bin/bash
global_var="Hello"
function function_name {
local local_var="World"
echo $global_var $local_var
}
local_var="test"
echo $local_var
# 调用函数
function_name # 输出 "Hello World"
echo $local_var
输出
test
Hello World
test
如果在函数function_name 中不加local,local_var的值会被改变
示例
#!/bin/bash
global_var="Hello"
function function_name {
local_var="World"
echo $global_var $local_var
}
local_var="test"
echo $local_var
# 调用函数
function_name # 输出 "Hello World"
echo $local_var
输出
test
Hello World
World
总之,Shell中的函数用于封装可重用代码的逻辑块,并使程序更加模块化和易于维护;函数可以接受参数和返回值,并支持局部和全局变量的使用。