網(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
相關(guān)推薦
- 2022-10-12 Python?Pandas的concat合并_python
- 2023-01-30 VMware?Tools?啟動腳本未能在虛擬機中成功運行的兩種解決方法_VMware
- 2022-08-25 Python中的基本數(shù)據(jù)類型介紹_python
- 2022-08-04 react使用mobx封裝管理用戶登錄的store示例詳解_React
- 2022-04-30 C語言實現(xiàn)職工工資管理系統(tǒng)_C 語言
- 2022-05-08 C++?vector的簡單實現(xiàn)_C 語言
- 2022-08-16 python上下文管理器協(xié)議的實現(xiàn)_python
- 2021-12-02 Golang共享變量如何解決問題_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支