温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

shell函数内如何调用另一个函数

发布时间:2022-08-04 14:08:35 来源:亿速云 阅读:236 作者:iii 栏目:开发技术

今天小编给大家分享一下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执行结果:

shell函数内如何调用另一个函数

二、函数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函数内如何调用另一个函数

等等,为什么结果输出为空呢?原来shell中调用带返回值的函数之后,返回值自动保存在$?中,所以将函数B改成如下即可:

#!/bin/bash

# 即将被调用的函数A
function A(){
	a=10
	return $a
}

# 函数B
function B(){
	a=`A`
	echo $?  # 注意:这里要用英文的?,不能用中文的?
}

B

查看执行结果:

shell函数内如何调用另一个函数

然而,题主遇到返回结果并不是期望结果的情况。代码如下:

#!/bin/bash

# 即将被调用的函数A
function A(){
	a="aaa"
	return $a
}

# 函数B
function B(){
	a=`A`
	echo $?
	echo "bbb"
}

B

命令行执行sh test.sh查看结果:

shell函数内如何调用另一个函数

这是什么意思呢?为什么是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

查看结果:

shell函数内如何调用另一个函数

以上就是“shell函数内如何调用另一个函数”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI