说明
- shell中的函数的变量,等价于全局变量,类似于Python函数中global的作用,所以函数里面的变量是可以直接在外部访问的。
- 如果希望函数中的变量只针对函数可见,需要使用local sum来标识。
- 特别注意,函数中没有类似于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
。