2019独角兽企业重金招聘Python工程师标准>>>

Bash函数,不同于其他编程语言的函数,它更像一个子程序,即其返回值,只能是一个数字,以0表示成功,非0表示失败。如果,您在bash函数中想返回除了数字之外的值,就需要自己设计一定的技巧了。今天看到了一篇文章,简单介绍了三种技巧,笔者翻译下来,与大家分享。

假设我们想返回一个字符串,最简单的方法是:

function myfunc(){myresult='the value'
}
myfunc
echo $myresult

通过一个全局变量myresult,来保存返回值。使用全局变量,其缺点也是不言而喻的。

第二种方法:

function myfunc(){local myresult='some value'echo "$myresult"
}
result=$(myfunc) # or result=`myfunc`
echo $result

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

第三种方法:

function myfunc(){local __resultvar=$1local myresult='some value'eval $__resultvar="'$myresult'"
}
myfunc result
echo $result

这种方法,类似于C++中的通过引用返回函数值的做法。

当然,您还可以结合后两种方法:

function myfunc(){local __resultvar=$1local myresult='some value'if [[ "$__resultvar" ]]; theneval $__resultvar="'$myresult'"elseecho "$myresult" fi
}
myfunc result
echo $result
result2=$(myfunc)
echo $result2

这样,获得了最大的灵活。

转载于:https://my.oschina.net/aiguozhe/blog/108369

从bash函数中返回任意值相关推荐

  1. bash shell函数中返回任意值的四种方法

    From: http://www.jbxue.com/article/11322.html 本文介绍下,在bash shell编程中,从函数中返回任意值的几种方法,有需要的朋友参考下. 在bash中, ...

  2. 《C++面向对象高效编程(第2版)》——3.16 从函数中返回引用

    本节书摘来自异步社区出版社<C++面向对象高效编程(第2版)>一书中的第3章,第3.16节,作者: [美]Kayshav Dattatri,更多章节内容可以访问云栖社区"异步社区 ...

  3. C函数中返回字符数组

    原文 C函数中返回字符数组,CSDN同步发布. 转载请注明出处,谢谢! 强力推荐-不要错过,万一能帮助到自己呢? 朋友做了一个关于 人工智能的教程,教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小 ...

  4. python 从函数中返回函数

    从函数中返回函数 其实并不需要在一个函数里去执行另一个函数,我们也可以将其作为输出返回出来: def hi(name="yasoob"):def greet():return &q ...

  5. c 语言 函数返回数组_如何在C ++函数中返回数组

    c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...

  6. C 如何在函数中返回一个数组

    int test(int *b) {int source[5]={[1]=2,[3]=4,[4]=-2}; memcpy(b,source,5*sizeof(int));return 0; }int ...

  7. 函数中返回char *类型

    记录一次比较容易引起混淆的地方. #include <stdio.h> char *str(void) {return "nihao\n"; }int main() { ...

  8. 在qt中用c语言数组,在QT函数中返回一个数组/把一个数组传参给函数

    1.把数组传参给函数 可以定义一个QVector的一个数组 QVector num(10); for(int  i =0;i<10;i++) num [i] = i*i; fun(num); / ...

  9. java返回不同类型_Java,如果我想从函数中返回不同的类型怎么办?

    public WHATTOWRITEHERE test() { try { transaction.begin(); code which may trigger exception transact ...

最新文章

  1. Tomcat_7.x压缩版_环境变量配置(亲测有效)
  2. b区计算机考研招不满的大学,B区又一所院校招收大量调剂!一志愿不满!
  3. 深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
  4. 有个疑问,想知道你们的前端都是自学吗?
  5. android:id = @+id 用法,@+id/android:list和@android:id/list的写法
  6. 敏捷开发免费管理工具——火星人预览之二:编辑故事,产品管理,组织结构...
  7. java不带括号_java – 打印数组,不带括号和逗号
  8. linux命令hexdump,Linux中hexdump命令起什么作用呢?
  9. ZooKeeper 数据模型 Znode 结构特性详解
  10. 微星主板 新版bios 开启虚拟化
  11. Java成神之路(持续更新)
  12. Linux用户层和内核文件读写
  13. 计算机怎么学的快,怎样学电脑打字最快电脑新手如何快速学会打字
  14. java isfile 的用法_Java File isFile()方法
  15. Houdini 节点
  16. HDU 4147 KFC -Z+W
  17. BeeWare 峰器 中文文档 - 教程 0 - 让我们开始
  18. IT项目管理课后作业
  19. [USACO 1.5] 跳棋的挑战
  20. 目标检测YOLO系列算法的进化史

热门文章

  1. 前端信息查询与显示_中国商标网查询显示的信息都是正确的吗
  2. linux io映射,【原创】Linux 文件系统移植全解密以linux-2.6.35内核源码为例说明一下IO静态映射的过程...
  3. alv 刷新_钜献 | 60小时刷新你的雅思托福成绩!明早9点我们要搞事情了!
  4. mysql的三大特性_【mysql】Innodb三大特性之double write
  5. MySQL多字段排序乱_Mysql ORDER BY 中文排序错乱问题
  6. python程序中怎样数个数_python3中的代码行数是怎么计算的?
  7. tp5缓存在html怎么用,tp5.1缓存Cache的使用
  8. oracle更改文件,Oracle修改数据文件名以及移动数据文件
  9. Canvas绘制星球轨迹移动
  10. 大学期末考试SSH试题四