在内联 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
}
替换return
为echo
,您的代码可以正常工作。
从评论:
用 echo 替换 return 并且您的代码可以正常工作。- 搅拌机
该$(...)
语法专门设计用于为您提供命令的输出,即使该命令恰好是函数调用。函数中的返回类似于整个脚本的退出;它设置它的状态,它是一个 0 到 255 范围内的整数。(这与您可能习惯使用的其他语言完全不同,其中 return 用于从函数返回一个值。) – Keith Thompson
Bash 函数与其他语言中的函数不同。它们的行为与任何其他命令相同:它们可以接受命令行参数、从标准输入读取、写入标准输出和标准错误,并以退出状态返回。它们不 - 严格来说 - 返回计算值。– 切普纳