Skip to content

商务合作:vTikTok


公众号:



说明

  1. shell中的函数的变量,等价于全局变量,类似于Python函数中global的作用,所以函数里面的变量是可以直接在外部访问的。
  2. 如果希望函数中的变量只针对函数可见,需要使用local sum来标识。
  3. 特别注意,函数中没有类似于Python直接可以把返回值return的,因为返回值只能是状态码int类型,表示这条命令是否执行成功。调用函数后可以通过$?

Shell 中的返回值表示的是函数的退出状态:返回值为 0 表示函数执行成功了,返回值为非 0 表示函数执行失败(出错)了。if、while、for 等语句都是根据函数的退出状态来判断条件是否成立。

如果函数体中没有 return 语句,那么使用默认的退出状态,也就是最后一条命令的退出状态。如果这就是你想要的,那么更加严谨的写法为:return $?

用户

在shell中如何定义一个函数

助手

例如,下面的函数将返回一个字符串:

my_function() {
echo "Hello, world!"
}
my_function() {
echo "Hello, world!"
}

要在外部调用这个函数并使用它的返回值,可以使用以下语法:

result=$(my_function)
result=$(my_function)

这将调用my_function函数,并将其返回值存储在result变量中。在这个例子中,result变量将包含字符串"Hello, world!"

在Shell中,函数的返回值是通过函数的退出状态码(exit status)来传递的,而不是通过return语句来传递的。因此,在函数中使用echo语句输出字符串,然后在函数调用的地方使用命令替换(command substitution)来获取函数的输出,就可以实现函数的返回值。

以下是一个示例函数,它将两个参数相加,并将结果输出到标准输出:

add() {
  local sum=$(($1 + $2))
  echo $sum
}
add() {
  local sum=$(($1 + $2))
  echo $sum
}

在函数中,我们使用local关键字来声明一个局部变量sum,并将两个参数相加赋值给它。然后,我们使用echo语句将sum的值输出到标准输出。

要调用这个函数并获取它的返回值,我们可以使用命令替换:

result=$(add 2 3)
echo $result
result=$(add 2 3)
echo $result

这将调用add函数,并将它的输出赋值给result变量。然后,我们使用echo语句将result的值输出到标准输出。在这个例子中,result变量将包含字符串5