Shell 函数


Shell 函数

Shell 函数是一组命令的集合。它们可以被多次调用,从而避免代码重复。Shell 函数也可以带有参数,允许用户在调用函数时传递参数。Shell 脚本中的函数使用语法类似于其他编程语言中的函数。

定义函数

要定义一个函数,必须给其一个名称,并使用关键字 function。函数的主体使用花括号 {} 包含。以下是定义一个简单函数的示例:

function myfunction {
  echo "Hello World"
}

以上代码定义了一个名为 myfunction 的函数,当函数被调用时,它将输出 “Hello World”。

还可以使用更简单的方式来定义函数,如下所示:

myfunction() {
  echo "Hello World"
}

这种写法与上述写法是等价的。

调用函数

要调用 Shell 函数,只需使用其名称并在其后面加上括号。以下是调用上面定义的 myfunction 函数的示例:

myfunction

此时,函数将被执行,并输出 “Hello World”。如果函数需要参数,则需要在调用函数时将它们传递给函数。

传递参数

Shell 函数可以像其他编程语言中的函数一样接受参数。要传递参数,只需在调用函数时将它们传递给函数。以下是接受参数的示例:

function greet {
  echo "Hello $1"
}

这个函数接受一个参数,将其用于输出打招呼的消息。例如,如果我们调用 greet 函数并传递 “John”,则输出将是 “Hello John”。调用函数的方式如下:

greet John

我们还可以传递多个参数,只需在调用函数时以空格分隔它们。在函数中,可以使用 $n 的形式引用传入的第 n 个参数。例如,以下是一个接受两个参数的 Shell 函数的示例:

function greet {
  echo "Hello $1 and $2"
}

当我们调用该函数并传递 “John” 和 “Tom” 两个参数时,输出消息将是 “Hello John and Tom”。

函数返回值

函数可以使用 return 语句返回值。返回值必须是 0 - 255 范围内的整数。例如:

function add {
  return $(( $1 + $2 ))
}

调用该函数并传递两个参数,将返回它们的和。我们可以将返回值存储在一个变量中,如下所示:

result=$(add 3 5)
echo $result

此时,将输出 8。

局部变量

函数中的变量默认情况下是全局的,可以通过使用 local 关键字使它们变成局部变量。以下是使用局部变量的示例:

function myfunction {
  local myvar="Hello World"
  echo $myvar
}

在函数中定义的变量 myvar 只在函数内部可见,在函数外部不可访问。

总结

Shell 函数是一种用于组织 Shell 脚本中重复代码的工具。它们可以带有参数和返回值。在函数中定义的变量在默认情况下是全局的,但可以使用 local 关键字将其变成局部变量。