[Shell] - Shell 函数

函数

函数就是封装起来的代码块,可以重复调用。

Shell 函数的语法为:

[ function ] funname [()]

{

    action;

    [return int;]

}

Shell 函数的返回值必须为 int(整型)且值的区间为 [0, 255]

相关知识点:Shell 特殊变量

基本形式

函数可以有参数也可以没有参数,可以有返回值也可以没有返回值。

示例:

# function 可以省略
function test() {
  echo "hello function."
}

# 调用函数
test

简写形式:

test
{
  echo "hello function."
}

此时花括号必须单独成为一行(不能与函数名放在同一行),否则会得到一个错误。

带有返回值的函数

Shell 获取函数返回值需要使用特殊变量 $?Shell 函数的返回值必须是整型且值的区间为 [0,255],超过 255 的部分将重新以 0 开始计算,如 256 将被认为是 0,257 被认为是 1,直到重新计算至 255,接下来又会以 0 开始计算。

$? 获取上一个命令的退出状态

示例:

function test() {
  return 1
}

# 执行函数
test

# 获取上一个命令的执行状态
echo $?

在这个示例中,test 函数返回了 1,调用函数后再获取上一条命令的返回状态(即返回值 1),得到 test 函数的返回值。

函数的返回值不能直接赋值给一个变量,下面是 错误的例子

function test() {
  return 1
}

# 试图将函数返回值赋值给变量 a
a=test

# 输出的结果是 test(被认为是字符串)
echo $a

在 Shell 中函数并不能像其他语言那样返回各种类型的数据(如字符串),一般用来判断程序的执行状态(返回 0 或 1)。

带有参数的函数

Shell 函数的参数也需要使用特殊变量来获取,而不像其他语言那样在括号中指定函数的参数(Shell 函数名称后面的括号好鸡肋 %>_<%)。

示例:

function test() {
  echo "参数为 $1"
}

# 调用函数时指定参数
test 1

第一个参数为 $1,第二个参数为 $2,以此类推。

讨论

还没有人评论~