From: http://www.jbxue.com/article/11322.html

本文介绍下,在bash shell编程中,从函数中返回任意值的几种方法,有需要的朋友参考下。

在bash中,函数更像一个子程序,即其返回值,只能是一个数字,以0表示成功,非0表示失败。

在bash函数中,返回除了数字之外的值,有三种方法:

在bash shell编程中,假如想返回一个字符串,可以有如下的方法。

方法1,也是最简单的方法:

复制代码 代码示例:
function myfunc() 

    myresult='the value' 

myfunc 
echo $myresult 

以上方法,通过一个全局变量myresult,来保存返回值。
 
方法2,子程序调用

复制代码 代码示例:
function myfunc() 

    local  myresult='some value' 
    echo "$myresult" 

  
result=$(myfunc)   # or result=`myfunc` 
echo $result 
 

以上方法,将一个shell函数作为一个子程序调用,将返回值写到子程序的标准输出,来达到返回任意字符串的目的。
 
方法3,通过引用返回函数值

复制代码 代码示例:
function myfunc() 

    local  __resultvar=$1 
    local  myresult='some value' 
    eval $__resultvar="'$myresult'" 

  
myfunc result 
echo $result 
 

有点类似于C++中的通过引用返回函数值的做法。

以下是结合后两种方法的集大成,代码如下:

复制代码 代码示例:
function myfunc() 

    local  __resultvar=$1 
    local  myresult='some value' 
    if [[ "$__resultvar" ]]; then 
        eval $__resultvar="'$myresult'" 
    else 
        echo "$myresult" 
    fi 

  
myfunc result 
echo $result 
result2=$(myfunc) 
echo $result2

通过二者的结合,该方法的灵活性有了很大提高。

bash shell函数中返回任意值的四种方法相关推荐

  1. 在js中加html_在HTML文档中嵌入JavaScript的四种方法

    在HTML里嵌入JavaScript 在HTML文档里嵌入客户端JavaScript代码有4中方法: 1.内嵌,放置在标签之间  (少): 2.放置在有 3.放置自HTML事件处理程序中,该事件处理程 ...

  2. python写错了怎么更改-Python中修改字符串的四种方法

    在Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符. 因此改变一个字符串的元素需要新建一个新的字符串. 常见的修改方法有以下4种. 方法1:将字符串转换成列表后修改值,然后用joi ...

  3. matlab中单独存图_Matlab中图片保存的四种方法

    Matlab 中图片保存的四种方法 matlab 的绘图和可视化能力是不用多说的, 可以说在业内是家喻户晓的. Matlab 提供了丰富 的绘图函数,比如 ez** 系类的简易绘图函数, surf . ...

  4. python字符串中某个字符修改_Python中修改字符串的四种方法

    在Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符. 因此改变一个字符串的元素需要新建一个新的字符串. 常见的修改方法有以下4种. 方法1:将字符串转换成列表后修改值,然后用joi ...

  5. php 从数组里删除元素,PHP从数组中删除元素的四种方法实例

    PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...

  6. Vue项目中刷新当前页面的四种方法

    Vue项目中刷新当前页面的四种方法 前记 刷新当前页面的四种方法 this.$router.go(0) location.reload() 跳转空白页再跳回原页面 使用provide / inject ...

  7. 单一修改高程值lisp_浅谈AutoCAD中修改高程的四种方法

    浅谈 AutoCAD 中修改高程的四种方法 摘 要: 在使用 AutoCAD 进行数字化成图工作中,经常遇到线划的标高不为零,及高程点的值与实地不符,需要对其进行修改等情况,结合实 际工作经验,简单介 ...

  8. C++中线程同步的四种方法(Win32平台)

    1.同步和互斥 互质是一种特殊的同步.线程同步一般指线程之间的执行存在某种程度上的相互依赖关系. 2.C++中线程同步的四种方法 (1)事件(Event); (2)信号量(semaphore); (3 ...

  9. java list转set去重_Java中List去重的四种方法

    Java中List去重的四种方法 package com.lxz.test; import java.util.ArrayList; import java.util.HashSet; import ...

最新文章

  1. 网易UI自动化测试探索:Airtest+Poco
  2. 马云“赢在中国”对于80后创业者的忠告
  3. 计算机部分选择怎么操作,计算机基础试题选择题部分
  4. 小波滤波器与其他滤波器的区别_滤波器国产 VS 国外
  5. 不同用户同时并发测压_程序猿学GO:并发
  6. java装箱和拆箱的意义_java的自动拆箱和装箱是每个程序员都要知道的
  7. 将集合类转换成DataTable
  8. SwitchHosts-一款实用的host地址切换工具
  9. java串口rxtx的若干坑
  10. 我的世界java版地狱_我的世界怎么去地狱_Minecraft地狱门建造教程 - 我的世界中文站...
  11. 13种老人不适合带孩子_这13种老人真的不适合带孩子 这些老人带孩子后果不堪设想...
  12. H5 集成微信自定义分享(兼容 ios android)
  13. 软件测试常用linux命令
  14. 2020语数英小学初中课程百度云学而思Python笔记
  15. IT 安防生意不好做,我被赶出了电子卖场
  16. python抢购爬虫_一个关于爬虫的抢购软件优化问题
  17. Qt MVD模型视图代理组件简介
  18. 《欢乐搭桥》策划反推
  19. 低压配电网络中三相潮流计算的前推回代法(Matlab实现)
  20. html页面怎么显示错误信息,Web浏览器显示错误页面

热门文章

  1. 走出囚徒困境的方法_囚徒困境的一种计算方法
  2. handler 消息处理机制
  3. 莫烦Pytorch神经网络第二章代码修改
  4. leetcode 1442. 形成两个异或相等数组的三元组数目(位运算)
  5. leetcode 697. 数组的度(hashmap)
  6. 归约归约冲突_JavaScript映射,归约和过滤-带有代码示例的JS数组函数
  7. 肯德基圣代中间空心_建造冰淇淋圣代解释CSS位置
  8. 请求接口时使用时间戳
  9. [Swift]LeetCode1035.不相交的线 | Uncrossed Lines
  10. Python循环的一些基本练习