shell函数内调用另一个函数(不带返回值和带返回值)
目录
- 一、函数B调用不带返回值的函数A
- 二、函数B调用带返回值的函数A,并接收函数A的返回值进行输出
一、函数B调用不带返回值的函数A 新建文件,命名为 test.sh,添加如下代码:
#!/bin/bash# 即将被调用的函数Afunction A(){ a="aaa" echo $a}# 函数B,直接调用Afunction B(){ A echo "bbb"}B
命令行中通过
sh test.sh
执行结果:文章图片
二、函数B调用带返回值的函数A,并接收函数A的返回值进行输出 如果函数A有return,是不是在上面例子的基础上,把A函数加多一个return就可以了呢?那么我们来试一下,代码如下:
#!/bin/bash# 即将被调用的函数Afunction A(){ a=10 return $a}# 函数Bfunction B(){ a=`A`# 注意,这里不能直接写成a=A echo $a}B
命令行执行
sh test.sh
查看执行结果:文章图片
等等,为什么结果输出为空呢?原来shell中调用带返回值的函数之后,返回值自动保存在$?中,所以将函数B改成如下即可:
#!/bin/bash# 即将被调用的函数Afunction A(){ a=10 return $a}# 函数Bfunction B(){ a=`A` echo $?# 注意:这里要用英文的?,不能用中文的?}B
查看执行结果:
文章图片
【shell函数内调用另一个函数(不带返回值和带返回值)】然而,题主遇到返回结果并不是期望结果的情况。代码如下:
#!/bin/bash# 即将被调用的函数Afunction A(){ a="aaa" return $a}# 函数Bfunction B(){ a=`A` echo $? echo "bbb"}B
命令行执行
sh test.sh
查看结果:文章图片
这是什么意思呢?为什么是255,而不是期望的结果“aaa”?原因是shell中用return的话,return的值只能为整形,其它非整形的,如想要直接return是获取不到的。
那么,该如何解决该问题呢?代码如下:
#!/bin/bash# 即将被调用的函数Afunction A(){ a="aaa" echo $a}# 函数Bfunction B(){ a=`A` echo $a echo "bbb"}B
查看结果:
文章图片
怎么样?居然不用return字段,很奇怪吧?shell的语法就是这么特立独行。至此,问题得到解决。
到此这篇关于shell函数内调用另一个函数(不带返回值和带返回值)的文章就介绍到这了,更多相关shell函数内调用另一个函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 投稿|《独行月球》猛药,治不了开心麻花内耗
- 走进新小说派的哲学内心,发现一个理解世界的新视角!
- Python3常用到的函数总结|Python实战项目—金融量化分析(数据的简单预处理)
- shell编程基础
- 函数,递归以及dom简单操作
- echarts几个公司内部数据可视化图表必收藏
- Headless|Headless CMS Sanity 数据建模——定义文档内容的结构
- 国内首发可视化智能调优平台,小龙带你玩转KeenTune UI
- 解析react|解析react 函数组件输入卡顿问题 usecallback react.memo
- C++虚继承的实现原理由内存布局开始讲起