使用 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 函数的输出,而不是查看退出状态码。