我想将一个参数传递给一个函数并从中返回一个计算值,以便存储以供进一步处理。以下是示例代码。
#!/bin/bash
test()
{
echo $1
c=$(expr $1 + "10000")
return $c
}
var=$(test 10)
echo $var
我想得到存储在var中的c的值。在这种情况下,有人可以帮忙。
答案 0 :(得分:2)
"返回值"你使用它的函数是stdout。
"返回"将设置退出状态($?),您可能没有用。
"测试"可能是一个糟糕的名字选择,因为它被采用(qv。man test
)。
所以:
$ Test() { expr $1 + 10000; }
$ var=$(Test 10)
$ echo $var
10010
答案 1 :(得分:2)
如果你想要做的就是在你的输入中添加10000,那么一个函数就是矫枉过正。为此,这不会工作吗?
your_arg=10
var=$(( ${your_arg}+10000 ))
echo $var
答案 2 :(得分:0)
您的代码中存在一些问题。
#!/bin/bash
它有效,但定义一个名为test
的函数并不是一个好主意,因为test
is a standard Unix program。
test()
{
将调试输出写入标准错误(& 2)而不是标准输出(& 1)。标准输出用于返回数据。
echo "$1" >&2
使用local
在函数中声明变量以避免副作用。
local c=$(expr "$1" + "10000")
使用echo
代替return
返回字符串。 return
只能返回整数。
echo "$c"
}
var=$(test 10)
如果不确定总是引用参数。
echo "$var" >&2