我想将一个参数传递给一个函数,并从中返回一个计算出的值以供进一步处理。以下是示例代码。从shell脚本中的函数返回值
#!/bin/bash
test()
{
echo $1
c=$(expr $1 + "10000")
return $c
}
var=$(test 10)
echo $var
我想获取存储在var中的c的值。任何人都可以请在这种情况下帮助。
我想将一个参数传递给一个函数,并从中返回一个计算出的值以供进一步处理。以下是示例代码。从shell脚本中的函数返回值
#!/bin/bash
test()
{
echo $1
c=$(expr $1 + "10000")
return $c
}
var=$(test 10)
echo $var
我想获取存储在var中的c的值。任何人都可以请在这种情况下帮助。
您使用的函数的“返回值”是stdout。 “返回”将设置退出状态($?),您可能不会使用它。 “测试”可能是名称的错误选择,因为它被采用(qv。man test
)。 所以:
$ Test() { expr $1 + 10000; }
$ var=$(Test 10)
$ echo $var
10010
谢谢:)其工作... 我不会使用测试作为我的函数名称。这只是一个例子,但是我的命名错误。 非常感谢:) – Praveen
如果你希望做的就是增加10000至您的输入,然后一个功能是矫枉过正。为此,这不工作?
your_arg=10
var=$((${your_arg}+10000))
echo $var
举个例子,我粘贴了这个简单的代码。我正在使用另一个函数将时间(HH:MM)转换为秒,并且这个函数被多次调用。 – Praveen
您的代码中存在一些问题。
#!/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
尽管在上面提出的重复中使用了“string”这个词,但它并不一定是一个字符串。重点是你只能从shell函数中返回一个无符号字节(0-255)。 – kojiro