从shell脚本中的函数返回值

时间:2017-05-04 03:08:23

标签: bash function shell return-value

我想将一个参数传递给一个函数并从中返回一个计算值,以便存储以供进一步处理。以下是示例代码。

#!/bin/bash

test()
{
    echo $1

    c=$(expr $1 + "10000")

    return $c
}

var=$(test 10)

echo $var

我想得到存储在var中的c的值。在这种情况下,有人可以帮忙。

3 个答案:

答案 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