bash shell函数中返回任意值的四种方法
From: http://www.jbxue.com/article/11322.html
在bash中,函数更像一个子程序,即其返回值,只能是一个数字,以0表示成功,非0表示失败。
在bash函数中,返回除了数字之外的值,有三种方法:
在bash shell编程中,假如想返回一个字符串,可以有如下的方法。
方法1,也是最简单的方法:
{
myresult='the value'
}
myfunc
echo $myresult
以上方法,通过一个全局变量myresult,来保存返回值。
方法2,子程序调用
{
local myresult='some value'
echo "$myresult"
}
result=$(myfunc) # or result=`myfunc`
echo $result
以上方法,将一个shell函数作为一个子程序调用,将返回值写到子程序的标准输出,来达到返回任意字符串的目的。
方法3,通过引用返回函数值
{
local __resultvar=$1
local myresult='some value'
eval $__resultvar="'$myresult'"
}
myfunc result
echo $result
有点类似于C++中的通过引用返回函数值的做法。
以下是结合后两种方法的集大成,代码如下:
{
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函数中返回任意值的四种方法相关推荐
- 在js中加html_在HTML文档中嵌入JavaScript的四种方法
在HTML里嵌入JavaScript 在HTML文档里嵌入客户端JavaScript代码有4中方法: 1.内嵌,放置在标签之间 (少): 2.放置在有 3.放置自HTML事件处理程序中,该事件处理程 ...
- python写错了怎么更改-Python中修改字符串的四种方法
在Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符. 因此改变一个字符串的元素需要新建一个新的字符串. 常见的修改方法有以下4种. 方法1:将字符串转换成列表后修改值,然后用joi ...
- matlab中单独存图_Matlab中图片保存的四种方法
Matlab 中图片保存的四种方法 matlab 的绘图和可视化能力是不用多说的, 可以说在业内是家喻户晓的. Matlab 提供了丰富 的绘图函数,比如 ez** 系类的简易绘图函数, surf . ...
- python字符串中某个字符修改_Python中修改字符串的四种方法
在Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符. 因此改变一个字符串的元素需要新建一个新的字符串. 常见的修改方法有以下4种. 方法1:将字符串转换成列表后修改值,然后用joi ...
- php 从数组里删除元素,PHP从数组中删除元素的四种方法实例
PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...
- Vue项目中刷新当前页面的四种方法
Vue项目中刷新当前页面的四种方法 前记 刷新当前页面的四种方法 this.$router.go(0) location.reload() 跳转空白页再跳回原页面 使用provide / inject ...
- 单一修改高程值lisp_浅谈AutoCAD中修改高程的四种方法
浅谈 AutoCAD 中修改高程的四种方法 摘 要: 在使用 AutoCAD 进行数字化成图工作中,经常遇到线划的标高不为零,及高程点的值与实地不符,需要对其进行修改等情况,结合实 际工作经验,简单介 ...
- C++中线程同步的四种方法(Win32平台)
1.同步和互斥 互质是一种特殊的同步.线程同步一般指线程之间的执行存在某种程度上的相互依赖关系. 2.C++中线程同步的四种方法 (1)事件(Event); (2)信号量(semaphore); (3 ...
- java list转set去重_Java中List去重的四种方法
Java中List去重的四种方法 package com.lxz.test; import java.util.ArrayList; import java.util.HashSet; import ...
最新文章
- 网易UI自动化测试探索:Airtest+Poco
- 马云“赢在中国”对于80后创业者的忠告
- 计算机部分选择怎么操作,计算机基础试题选择题部分
- 小波滤波器与其他滤波器的区别_滤波器国产 VS 国外
- 不同用户同时并发测压_程序猿学GO:并发
- java装箱和拆箱的意义_java的自动拆箱和装箱是每个程序员都要知道的
- 将集合类转换成DataTable
- SwitchHosts-一款实用的host地址切换工具
- java串口rxtx的若干坑
- 我的世界java版地狱_我的世界怎么去地狱_Minecraft地狱门建造教程 - 我的世界中文站...
- 13种老人不适合带孩子_这13种老人真的不适合带孩子 这些老人带孩子后果不堪设想...
- H5 集成微信自定义分享(兼容 ios android)
- 软件测试常用linux命令
- 2020语数英小学初中课程百度云学而思Python笔记
- IT 安防生意不好做,我被赶出了电子卖场
- python抢购爬虫_一个关于爬虫的抢购软件优化问题
- Qt MVD模型视图代理组件简介
- 《欢乐搭桥》策划反推
- 低压配电网络中三相潮流计算的前推回代法(Matlab实现)
- html页面怎么显示错误信息,Web浏览器显示错误页面
热门文章
- 走出囚徒困境的方法_囚徒困境的一种计算方法
- handler 消息处理机制
- 莫烦Pytorch神经网络第二章代码修改
- leetcode 1442. 形成两个异或相等数组的三元组数目(位运算)
- leetcode 697. 数组的度(hashmap)
- 归约归约冲突_JavaScript映射,归约和过滤-带有代码示例的JS数组函数
- 肯德基圣代中间空心_建造冰淇淋圣代解释CSS位置
- 请求接口时使用时间戳
- [Swift]LeetCode1035.不相交的线 | Uncrossed Lines
- Python循环的一些基本练习