4

在内联 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
}
4

2 回答 2

3

替换returnecho,您的代码可以正常工作。

于 2012-09-14T08:34:09.740 回答
0

从评论:

  • 用 echo 替换 return 并且您的代码可以正常工作。- 搅拌机

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

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

于 2012-11-02T05:54:17.367 回答