網站首頁 編程語言 正文
一、函數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的語法就是這么特立獨行。至此,問題得到解決。
原文鏈接:https://blog.csdn.net/u014259820/article/details/94563095
相關推薦
- 2022-11-01 Python利用Redis計算經緯度距離案例_python
- 2022-06-01 C語言?超詳細介紹與實現線性表中的無頭單向非循環鏈表_C 語言
- 2022-08-17 create-react-app常用自定義配置教程示例_React
- 2022-05-02 Redis使用命令行與多數據庫配置_Redis
- 2023-02-14 C#實現ComboBox變色的示例代碼_C#教程
- 2023-02-23 Android中URLEncoder空格被轉碼為"+"號的處理辦法_Android
- 2022-05-13 python魔法方法之__setattr__()_python
- 2023-04-01 react組件實例屬性state詳解_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支