Shell 获取函数的返回值

背景:定义了一个函数,需要对比 map 中的值,获取 value 中最小值。Shell 和其他语言的函数返回值还是差别挺大的。

定义一个函数

functionname(){
  操作内容
  echo 输出内容
  return 返回值  #返回值可有可无
}

获取的函数的返回值

  1. 函数默认是将标准输出传递出来,不是返回值
    所以如果直接调用 functionname ,实际上是将输出传递回来
    例如:
    a=`functionname`
    将函数 functionname 的标准输出传递给 a.

  2. 调用函数不是需要加 (),直接写函数名就可以
    functionname

  3. 使用 $? 接收上一个程序的返回值状态,也就是 return 的值

 return返回方法有数值的大小限制,超过255,就会从0开始计算,所以如果返回超过255,就不能用这种方式,建议采用echo输出。

接收方式:通过$? 获取返回值

functionname
#输出函数的返回值
echo $?

4.函数的返回值一般是 0 和1 ,表示成功和失败,如果一定要返回其他整数,定义一个全局变量,在函数中改变它遇到的问题:
将函数返回值赋值时报错:return: differentcluster: numeric argument required
虽然不影响适应,但看着总是不好,查了下说 shell 的函数默认值是返回 0 和 1 来表示是否成功,如果一定要返回值的话,可以在函数外定义一个全局变量,然后在函数中为这个变量赋值。这样调用函数后,全局变量就变了,达到同样的效果。
例如:通过函数增加 num 值

#!/bin/bash

num=10
add(){
  echo "test"
  ((num++))
}

#调用 
add

输出的结果是 11(变量自增我用 num=num+1 是无效的,必须使用 num++)

其他

Shell 中函数的参数定义也和其他语言不一样,不是放在括号内。函数中定义时直接在函数体内使用 $1、$2、...$n 来表示参数。
调用是直接 functionname para1 para2 ... paran 来调用函数.

原文:https://www.cnblogs.com/meitian/p/5662022.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值