Shell Script—函数

本文主要介绍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中的函数用于封装可重用代码的逻辑块,并使程序更加模块化和易于维护;函数可以接受参数和返回值,并支持局部和全局变量的使用。

猜你喜欢

转载自blog.csdn.net/shouhu010/article/details/131411650