shell函数内调用另一个函数(不带返回值和带返回值)
一、函数B调用不带返回值的函数A
新建文件,命名为 test.sh,添加如下代码:
#!/bin/bash # 即将被调用的函数A function A(){ a="aaa" echo $a } # 函数B,直接调用A function B(){ A echo "bbb" } B
命令行中通过sh test.sh
执行结果:
二、函数B调用带返回值的函数A,并接收函数A的返回值进行输出
如果函数A有return,是不是在上面例子的基础上,把A函数加多一个return就可以了呢?那么我们来试一下,代码如下:
#!/bin/bash # 即将被调用的函数A function A(){ a=10 return $a } # 函数B function B(){ a=`A` # 注意,这里不能直接写成a=A echo $a } B
命令行执行sh test.sh
查看执行结果:
等等,为什么结果输出为空呢?原来shell中调用带返回值的函数之后,返回值自动保存在$?中,所以将函数B改成如下即可:
#!/bin/bash # 即将被调用的函数A function A(){ a=10 return $a } # 函数B function B(){ a=`A` echo $? # 注意:这里要用英文的?,不能用中文的? } B
查看执行结果:
然而,题主遇到返回结果并不是期望结果的情况。代码如下:
#!/bin/bash # 即将被调用的函数A function A(){ a="aaa" return $a } # 函数B function B(){ a=`A` echo $? echo "bbb" } B
命令行执行sh test.sh
查看结果:
这是什么意思呢?为什么是255,而不是期望的结果“aaa”?原因是shell中用return的话,return的值只能为整形,其它非整形的,如想要直接return是获取不到的。
那么,该如何解决该问题呢?代码如下:
#!/bin/bash # 即将被调用的函数A function A(){ a="aaa" echo $a } # 函数B function B(){ a=`A` echo $a echo "bbb" } B
查看结果:
怎么样?居然不用return字段,很奇怪吧?shell的语法就是这么特立独行。至此,问题得到解决。
到此这篇关于shell函数内调用另一个函数(不带返回值和带返回值)的文章就介绍到这了,更多相关shell函数内调用另一个函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Shell脚本实现随机数多种方法介绍(date、random、uuid)
这篇文章主要介绍了Shell脚本实现随机数多种方法介绍,本文讲解了通过时间获得随机数、通过内部系统变量、通过系统内部唯一数据生成随机数等方法,需要的朋友可以参考下2014-11-11shell脚本学习指南[三](Arnold Robbins & Nelson H.F. Beebe著)
这篇文章主要介绍了shell脚本学习指南[三](Arnold Robbins & Nelson H.F. Beebe著),需要的朋友可以参考下2014-02-02Linux中使用locate和find进行不区分大小写的文件搜索
在日常使用计算机的过程中,尤其是处理大量文件时,快速找到特定文件变得尤为重要,Linux系统提供了许多命令行工具,其中“locate”和“find”是两个常用的文件搜索工具,本文给大家介绍了如何在Linux中使用locate和find进行不区分大小写的文件搜索2024-05-05Ubuntu服务器配置apache2.4的限速功能shell脚本分享
这篇文章主要介绍了Ubuntu服务器配置apache2.4的限速功能shell脚本分享,本文直接给出脚本实现代码,代码相关原理都写在了注释里,需要的朋友可以参考下2015-03-03Linux crontab定时执行Shell脚本需要执行特定的命令时解决思路
今天小编就为大家分享一篇关于Linux crontab定时执行Shell脚本需要执行特定的命令时解决思路,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2019-01-01
最新评论