曲径通幽论坛

标题: return 与函数返回值 [打印本页]

作者: beyes    时间: 2011-5-5 11:08
标题: return 与函数返回值
bash shell 用 return 命令从函数中返回一个值,以表示函数的退出状态:
[Bash shell] 纯文本查看 复制代码
 
#!/bin/bash
function ret {
read -p "Enter return value:" value
echo "doubling the value"
return $[ $value * 2 ]
}
ret
echo "The new value is $?"


运行输出:

$ sh return.sh
Enter return value:100
doubling the value
The new value is 200
但是用 return 返回数据时要注意返回值的取值范围是 0~256 .
再运行一下上面的脚本可看到:
$ sh return.sh
Enter return value:129
doubling the value
The new value is 2
已经发生了回绕,即 129*2 - 256 = 2 。

如果希望返回更大的整数或字符串,可以使用下面的技巧:
[Bash shell] 纯文本查看 复制代码
 
#!/bin/bash
function ret {
read -p "Enter return value:" value
echo $[ $value * 2 ]
}

result=`ret`
echo "The new value is $result"

运行输出:
$ sh return.sh
Enter return value:300
The new value is 600
需要注意的是,上面的 ret 函数要用 `` 号,而不是单引号括起来。另外,这个方法还可以返回浮点数和字符串,如:
[Bash shell] 纯文本查看 复制代码
 
#!/bin/bash
function ret {
echo "hello bash shell"
}

result=`ret`
echo "The new value is \"$result\""


运行输出:

$ sh return.sh
The new value is "hello bash shell"





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2