shell函数返回值(执行状态)的获取
2016-03-14 18:45
323 查看
#! /bin/sh
test()
{
echo "test!!!"
return 100
}
DD=`test`
#echo excute over
echo "return: $?"
echo "DD: $DD"
如上shell代码段,执行结果是
return: 100
DD: test!!!
如果 把#echo excute over注释去掉,执行结果是
excute over
return: 0
DD: test!!!
也就是说:$?是接收上一条函数的执行结果,在例一中,$?接收test函数的执行结果,执行结果其实就是其返回值,就是return 传出来的数值(return只能是数字,不能是字符串之类的),如果函数中没有显式调用return返回出来状态,那么系统会使用函数中最后一条shell指令的执行结果作为返回值,如果函数test()最后一条指令调用其他函数,如:test1(),那么test的返回值就是test1的返回值。
DD是作为一个变量接收函数的标准输出,比如echo产生出来的信息,不包括报错之类的信息,如上如果函数test中调用test1,那么test和test1中的标准输出都会赋值给变量DD.
注意:DD=`test` , ` `符号不是单引号‘’,而是ESC下面的那个符号,该句话的意思是执行函数test结果赋值给DD,如果是单引号的话这句话是把字符串“test”赋值给变量DD,注意,这句话的执行结果不是赋值是否成功,而是函数的执行状态
总结:所以,可以总结一下函数返回值获取的方法:
1)用变量接收函数返回值,函数用echo等标准输出将要返回的东西打印出来。
2)用$?来接收函数的执行状态,但是$?要紧跟在函数调用处的后面
test()
{
echo "test!!!"
return 100
}
DD=`test`
#echo excute over
echo "return: $?"
echo "DD: $DD"
如上shell代码段,执行结果是
return: 100
DD: test!!!
如果 把#echo excute over注释去掉,执行结果是
excute over
return: 0
DD: test!!!
也就是说:$?是接收上一条函数的执行结果,在例一中,$?接收test函数的执行结果,执行结果其实就是其返回值,就是return 传出来的数值(return只能是数字,不能是字符串之类的),如果函数中没有显式调用return返回出来状态,那么系统会使用函数中最后一条shell指令的执行结果作为返回值,如果函数test()最后一条指令调用其他函数,如:test1(),那么test的返回值就是test1的返回值。
DD是作为一个变量接收函数的标准输出,比如echo产生出来的信息,不包括报错之类的信息,如上如果函数test中调用test1,那么test和test1中的标准输出都会赋值给变量DD.
注意:DD=`test` , ` `符号不是单引号‘’,而是ESC下面的那个符号,该句话的意思是执行函数test结果赋值给DD,如果是单引号的话这句话是把字符串“test”赋值给变量DD,注意,这句话的执行结果不是赋值是否成功,而是函数的执行状态
总结:所以,可以总结一下函数返回值获取的方法:
1)用变量接收函数返回值,函数用echo等标准输出将要返回的东西打印出来。
2)用$?来接收函数的执行状态,但是$?要紧跟在函数调用处的后面
相关文章推荐
- Linux shell命令-账户相关
- python shell 方向键不可用
- 在bash中编辑文本
- bash报错./mq.sh: line 15: warning: here-document at line 10 delimited by end-of-file (wanted `eof')
- Shell命令
- Python代码追踪(类似于bash -x的效果)
- bash之花括号展开(brace expansion)
- shell 脚本 检测文件夹
- hbase shell 常用命令
- (转载)shell日志分析常用命令
- shell命令-trap
- Hadoop FS Shell命令大全
- 什么是Shell? bash是干啥的? 有什么关系
- Linux Shell 重定向
- Deformity JSP Webshell、Webshell Hidden Learning
- bash配置
- Bash简单介绍
- (1)、Powershell文件复制
- Git Bash怎么把本地的一个文件传送到github的操作方法
- atitit.木马病毒webshell的原理and设计 java c# .net php.