为什么我没有得到我的功能的回报?

时间:2012-09-14 08:24:32

标签: shell return

在内联shell中,我输入echo $(max 15 2)但没有得到任何答案?

为什么会这样?

代码:

function max {
  if [ "$1" -eq "$2" ]
  then
    return $1
  else
    if [ "$1" -gt "$2" ]
    then
      return $1
    else
      return $2
    fi
  fi
}

2 个答案:

答案 0 :(得分:3)

return替换为echo,您的代码可以正常使用。

答案 1 :(得分:0)

来自评论:

  • 用echo替换return,你的代码运行正常。 - Blender

  • $(...)语法专门用于为您提供命令的输出,即使该命令恰好是函数调用。函数返回类似于整个脚本的退出;它设置了它的状态,这是一个0到255范围内的整数。(这与你可能习惯使用的其他语言完全不同,返回用于从函数返回一个值。) - Keith Thompson

  • Bash功能与其他语言的功能不同。它们的行为与任何其他命令相同:它们可以接受命令行参数,从标准输入读取,写入标准输出和标准错误,并以退出状态返回。它们 - 严格来说 - 不返回计算值。 - chepner