【shell实战之】函数返回值

默认的退出状态码

在默认情况下,函数的退出状态码是函数中最后一个命令返回的退出状态码。函数执行结束
后,可以使用标准变量$?来确定函数的退出状态码

使用 return 命令

#!/usr/bin/bash

# bash shell 会使用 return 命令以特定的退出状态码退出函数。
# return 命令允许指定一个整数值作为函数的退出状态码

# 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 $?"

# ./return_command_exit.sh
# Enter a value:100

# ./return_command_exit.sh
# Enter a value:400


# dbl 函数会将$value 变量中用户输入的整数值翻倍,然后用 return 命令返回结果。脚本用$?变量显示出该结果。
# 当用这种方法从函数中返回值时,一定要小心。为了避免出问题,牢记以下两个技巧。
#    函数执行一结束就立刻读取返回值。
#    退出状态码必须介于 0~255。

# 如果在用$?变量提取函数返回值之前执行了其他命令,那么函数的返回值会丢失。
# $?变量保存的是最后执行的那个命令的退出状态码。

# 第二个技巧界定了返回值的取值范围。由于退出状态码必须小于 256,因此函数结果也必须
# 为一个小于 256 的整数值。大于 255 的任何数值都会产生错误的值

使用函数输出

#!/usr/bin/bash

# 正如可以将命令的输出保存到 shell 变量中一样,也可以将函数的输出保存到 shell 变量中:
#  result=$(dbl)
# 这个命令会将 dbl 函数的输出赋给$result 变量。

# 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"

# $ ./func_exit.sh
# Enter a value: 200
# The new value is 400

# $ ./func_exit.sh
# Enter a value: 1000
# The new value is 2000

# 新函数会用 echo 语句来显示计算结果。该脚本会获取 dbl 函数的输出,而不是查看退出状态码。
# 这个例子演示了一个不易察觉的技巧。注意,dbl 函数实际上输出了两条消息。
# read 命令输出了一条简短的消息来向用户询问输入值。bash shell 脚本非常聪明,并不将其作为 STDOUT
# 输出的一部分,而是直接将其忽略。
# 如果用 echo 语句生成这条消息来询问用户,那么它会与输出值一起被读入 shell 变量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值