【发布时间】:2013-06-24 14:04:34
【问题描述】:
我正在使用 bash 脚本,我想执行一个函数来打印返回值:
function fun1(){
return 34
}
function fun2(){
local res=$(fun1)
echo $res
}
当我执行fun2 时,它不会打印“34”。为什么会这样?
【问题讨论】:
-
return在您的情况下与exit code基本相同,范围为0 - 255。按照@septi 的建议使用echo。可以使用$?捕获退出代码。 -
在这种情况下,已经在 fun1 中使用 echo 会更加灵活。这是 unix 编程的想法:echo 将结果发送到标准输出,然后可以通过 res=$(fun1) 被其他函数重用 - 或者直接通过管道传递给其他函数:
function a() { echo 34; }function b() { while read data; do echo $data ; done ;}a | b跨度> -
正确的做法是将顶层的东西放在一个函数中,并使用带有 bash 动态范围规则的本地。我将创建一个答案来演示,它不是众所周知的功能,但完全受支持。
标签: bash function return-value