日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

shell函數(shù)內(nèi)調(diào)用另一個函數(shù)(不帶返回值和帶返回值)_linux shell

作者:三天打魚,兩天曬網(wǎng) ? 更新時間: 2022-09-29 編程語言

一、函數(shù)B調(diào)用不帶返回值的函數(shù)A

新建文件,命名為 test.sh,添加如下代碼:

#!/bin/bash

# 即將被調(diào)用的函數(shù)A
function A(){
	a="aaa"
	echo $a
}

# 函數(shù)B,直接調(diào)用A
function B(){
	A
	echo "bbb"
}

B

命令行中通過sh test.sh執(zhí)行結(jié)果:

在這里插入圖片描述

二、函數(shù)B調(diào)用帶返回值的函數(shù)A,并接收函數(shù)A的返回值進行輸出

如果函數(shù)A有return,是不是在上面例子的基礎(chǔ)上,把A函數(shù)加多一個return就可以了呢?那么我們來試一下,代碼如下:

#!/bin/bash

# 即將被調(diào)用的函數(shù)A
function A(){
	a=10
	return $a
}

# 函數(shù)B
function B(){
	a=`A`  # 注意,這里不能直接寫成a=A
	echo $a
}

B

命令行執(zhí)行sh test.sh查看執(zhí)行結(jié)果:

在這里插入圖片描述

等等,為什么結(jié)果輸出為空呢?原來shell中調(diào)用帶返回值的函數(shù)之后,返回值自動保存在$?中,所以將函數(shù)B改成如下即可:

#!/bin/bash

# 即將被調(diào)用的函數(shù)A
function A(){
	a=10
	return $a
}

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

B

查看執(zhí)行結(jié)果:

在這里插入圖片描述

然而,題主遇到返回結(jié)果并不是期望結(jié)果的情況。代碼如下:

#!/bin/bash

# 即將被調(diào)用的函數(shù)A
function A(){
	a="aaa"
	return $a
}

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

B

命令行執(zhí)行sh test.sh查看結(jié)果:

在這里插入圖片描述

這是什么意思呢?為什么是255,而不是期望的結(jié)果“aaa”?原因是shell中用return的話,return的值只能為整形,其它非整形的,如想要直接return是獲取不到的。
那么,該如何解決該問題呢?代碼如下:

#!/bin/bash

# 即將被調(diào)用的函數(shù)A
function A(){
	a="aaa"
	echo $a
}

# 函數(shù)B
function B(){
	a=`A`
	echo $a
	echo "bbb"
}

B

查看結(jié)果:

在這里插入圖片描述

怎么樣?居然不用return字段,很奇怪吧?shell的語法就是這么特立獨行。至此,問題得到解決。

原文鏈接:https://blog.csdn.net/u014259820/article/details/94563095

欄目分類
最近更新