使用 return 命令
bash shell 会使用 return 命令以特定的退出状态码退出函数。return 命令允许指定一个整数值作为函数的退出状态码,从而提供了一种简单的编程设定方式:
$ cat test5
#!/bin/bash
# using the return command in a function
function dbl {
read -p "Enter a value: " value
echo "doubling the value"
return $[ $value * 2 ]
}
dbl
echo "The new value is $?"
$
注意
dbl 函数会将$value 变量中用户输入的整数值翻倍,然后用 return 命令返回结果。脚本用$?变量显示出该结果。
当用这种方法从函数中返回值时,一定要小心。为了避免出问题,牢记以下两个技巧。
函数执行一结束就立刻读取返回值。
退出状态码必须介于 0~255。
如果在用$?变量提取函数返回值之前执行了其他命令,那么函数的返回值会丢失。记住,
$?变量保存的是最后执行的那个命令的退出状态码。
第二个技巧界定了返回值的取值范围。由于退出状态码必须小于 256,因此函数结果也必须
为一个小于 256 的整数值。大于 255 的任何数值都会产生错误的值:
$ ./test5
Enter a value: 200
doubling the value
The new value is 1
$
使用函数输出
正如可以将命令的输出保存到 shell 变量中一样,也可以将函数的输出保存到 shell 变量中:
result=$(dbl)
这个命令会将 dbl 函数的输出赋给$result 变量。来看一个例子:
$ cat test5b
#!/bin/bash
# using the echo to return a value
function dbl {
read -p "Enter a value: " value
echo $[ $value * 2 ]
}
result=$(dbl)
echo "The new value is $result"
$
$ ./test5b
Enter a value: 200
The new value is 400
$
$ ./test5b
Enter a value: 1000
The new value is 2000
$
新函数会用 echo 语句来显示计算结果。该脚本会获取 dbl 函数的输出,而不是查看退出状态码。