bash shell使用return命令来推出函数并返回特定的推出状态码。return命令允许指定一个整数值来定义函数的退出状态码,从而提供了编程设定函数退出状态码的简便途径。


$cat 11

function db1{

   read -p "Enter a value:" value

   echo "doubling the value"

   return $[ $value * 2 ]

}

db1

echo "the new value is $?"


db1 函数会将$value 变量中用户的值翻倍,然后用return命令返回结果,脚本用$?变量显示了该值。

但当用这种方法从函数中返回值时,要小心了,记住下面两条技巧来避免问题。

  1. 函数一结束就去返回值。

  2. 退出状态码必须在0--255之间。

如果你在用$?变量提取函数返回值之前执行了其他命令,函数的返回值可能会丢失。$?变量会返回执行的最后一条命令的退出状态码。

第二个问题定义了使用这种返回值方法的限制。由于退出状态码必须小于256,函数的结果必须生成一个小于256的整数值,任何大于256的值都会返回一个错误值;


# ./11 

Enter a value:200

doubling the value

the new value is 144

要返回较大的整数值或者字符串值的话,你就不能用这种返回值的方法了。取而代之,你必须使用另外一种方法。。。