linux shell函数返回值问题
在linux shell脚本中使用函数时,需要注意函数返回后,返回值的使用,不然很容易出问题。具体来说,shell脚本函数通过return返回后,返回值会保存在$?
中。需要注意的是,$?
会在函数返回后很快变回0值,所以应在函数返回后尽快将$?
保存在变量中,然后后续通过该变量来访问返回值,而不是直接通过$?
来进行后续处理。
如下代码,尽管D2确实是个目录,但是得到的结果始终会是$A
是一个REG文件,这是因为函数testFile返回后做了些其他的事,在后续进行$?
值判断时,它已变回了0.
#! /bin/bashtestFile()
{if [ -f $1 ]; thenreturn 0elsereturn 1fi
}for A in f1 D2dotestFile $ARET=somethingif [ $? = 0 ]; thenecho '$?' is $? echo $A is a REG fileelseecho '$?' is $?echo $A is not a REG filefi done
此时脚本执行结果为:
想要让程序按预期执行,需要在函数返回后,立即将返回值赋给变量,如下代码所示:
#! /bin/bashtestFile()
{if [ -f $1 ]; thenreturn 0elsereturn 1fi
}for A in f1 D2dotestFile $ARET=$?if [ $RET = 0 ]; thenecho '$?' is $? echo $A is a REG fileelseecho '$?' is $?echo $A is not a REG filefi done
执行结果为:
linux shell函数返回值问题相关推荐
- Linux Shell 函数返回值
Shell函数返回值,常用的两种方式:return,echo 1) return 语句shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回. 示例: #!/bin/sh fun ...
- Linux Shell函数返回值
2019独角兽企业重金招聘Python工程师标准>>> 1) return 语句 shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回. 示例: [javas ...
- linux 变量函数返回值,linux shell 自定义函数(定义、返回值、变量作用域)介绍...
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- Shell函数返回值、删除函数、在终端调用函数
Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: function_name () {list of commands[ return value ] } ...
- Shell函数:Shell函数返回值、删除函数、在终端调用函数
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...
- 14.3 shell函数返回值
3. shell函数返回值 3.1 获取上一个命令的退出状态$? 3.2 获取函数的返回值$? 3.3 函数的返回值接收调用方式 3.1 获取上一个命令的退出状态$? $? 是一个特殊变量,用来获取上 ...
- shell 函数返回值
Shell函数返回值,常用的两种方式:return,echo. 1.return 语句 该返回方法有数值的大小限制,超过255,就会从0开始计算,所以如果返回超过255,就不能用这种方式,建议采用ec ...
- Linux system函数返回值
例: status=system("./test.sh"); 1.先统一两个说法: (1)system返回值:指调用system函数后的返回值,比如上例中status为system ...
- Shell:函数返回值接收
函数返回值接收处理 目录 函数返回值接收处理 第一种方式:echo ${var} 第二种方式:return ${var} 第一种方式:echo ${var} 在函数fun()内部使用echo + 结果 ...
最新文章
- Discuz常见大问题-如何DIY一个独立页面
- hs_err_pid
- 802.11e (Quality of Service) : EDCA
- linux boot空间分多少,/boot分区空间不足,清理老内核所占空间
- mysql inception web_基于Inception搭建MySQL SQL审核平台Yearing
- 服务器ip直接访问php怎么写,php - 如何实现用公网ip访问到服务器上的网页?
- Python生成exe可执行文件的两种方法(py2exe和pyinstaller)
- 什么是互联网保险平台?
- C语言删除字符数组中指定的字符(C笔记)
- 第三阶段应用层——1.7 数码相册—电子书(5)—多线程支持多输入
- HTML中对字体颜色稀色,稀的五行属什么,五行分别代表什么颜色
- 小红书怎么看关键词排名?如何提升笔记自然搜索排名
- 520到了! 我用Python拜托周董为我和女友送上祝福!
- 第13章 Python建模库介绍--Python for Data Analysis 2nd
- 布隆过滤器(Bloom Filter)
- RSD和wlwmanifest是什么
- 蚂蚁通讯框架SOFABolt之私有通讯协议设计
- 推荐个东西,GPGPU开发
- 离散数学笔记(一)数理逻辑
- 如何把单词批量导入金山词霸生词本?
热门文章
- dubbo优势_dubbo优点是什么?dubbo有哪些缺点?
- 2022-2028全球与中国油田预测性维护市场现状及未来发展趋势
- 关于ArcGIS安装出现错误2种解决问题的方式。
- 李佳琦直播连续翻车的原因大揭秘,网红背后推手MCN机构都在做什么?
- 马老师力荐:腾讯 SpringBoot 高阶笔记,限时开源
- 学习笔记 python取余
- WIN7系统|Oracle11g数据库|Python|Django|VUE各种环境配置
- UGUI 刷新rectTransform
- Flask学习之旅——1.2项目配置
- 微机原理与接口技术计时十字路口交通信号灯及公共时钟