在shell脚本中要获取一个函数的返回值,有两个方法:


#! /bin/sh
function test()
{
        echo "test here"
        return 100
}
DD=`test`
#echo excute over
echo "return: $?"
echo "DD: $DD"


return: 100
DD: test here

如果 把#echo excute over注释去掉,执行结果是

excute over
return: 0
DD: test here

也就是说:$?是接收上一条函数的执行结果,在例一中,$?接收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)用$?来接收函数的执行状态,但是$?要紧跟在函数调用处的后面。

shell 获取函数返回值相关推荐

  1. linux里返回状态命令行,Shell $?获取函数返回值或者上一个命令的退出状态

    $? 是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值. 所谓退出状态,就是上一个命令执行后的返回结果.退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1, ...

  2. shell获取函数返回值

    1.使用return返回结果 #/bin/bash function test(){return "123" } test echo $? 注意: 1.必须使用$?获取函数返回值, ...

  3. Shell 获取函数返回值(函数返回值)

    返回值整形 #!/bin/shdef_one_install(){if [ -d "/opt/aaa" ];thenreturn 1elsereturn 0fi }main() { ...

  4. linux获取命令的返回值,Shell $?:获取函数返回值或者上一个命令的退出状态

    $?是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值. 所谓退出状态,就是上一个命令执行后的返回结果.退出状态是一个数字,一般情况下,大部分命令执行成功会返回0,失败返回1,这和C ...

  5. Shell函数(函数定义、函数变量、函数调用、函数传参、函数返回值、获取函数返回值)

    分享知识 传递快乐 1.函数定义 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.Shell 函数定义的语法格式如下: [function] funname [()]{函 ...

  6. shell脚本获取函数返回值

    方式1 原理:return返回的值可以通过$?得到. 缺点:return只能返回整数 #!/bin/sh function test() {return 100 } test echo $? 方式2 ...

  7. linux函数没有返回值导致溢出,Shell中函数返回值超出问题

    1.前言 快半年没有写博客了,荒废了很久,工作中的杂事太多,自己越来越懒了.为了鞭策自己成长,还是要坚持写写博客,记录自己的成长. 2.shell函数介绍 语法: [ function ] funna ...

  8. shell中函数返回值

    1.前言 快半年没有写博客了,荒废了很久,工作中的杂事太多,自己越来越懒了.为了鞭策自己成长,还是要坚持写写博客,记录自己的成长. 2.shell函数介绍 语法: [ function ] funna ...

  9. shell调用函数并获取函数返回值

    函数 func1() {local tmp=1000echo $tmpreturn $? }调用函数 mySize=`func1` echo $mySize

最新文章

  1. zookeeper分布式锁的原理
  2. 作者:聂敏,男,电子科技大学教育大数据研究所博士生。
  3. 【5.0】对象生命周期及crud操作
  4. c++之string类详解
  5. SQL server中如何使用return,break和continue
  6. 阿里云HPC--人工智能加速利器
  7. 群晖让usb打印机变成网络打印机
  8. The repository 'http://ppa.launchpad.net/octave/stable/ubuntu bionic Release' does not have a Releas
  9. 安卓开发旅之百度导航
  10. c++ Simpson积分
  11. Leco题目:回文数
  12. Bigben vlc sdl 播放视频可随窗口改变大小
  13. 周金涛:繁荣的起点并非沸腾的年代,或将在2020年出现首次证券市场大繁荣
  14. 软件开发的43款可视化工具
  15. 鸿蒙系统车联网,华为鸿蒙上车,关于车联网的想象有多少?
  16. 《HTML5+CSS3网页布局和样式精粹》.(张亚飞).[PDF]ckook
  17. 西游记中孙悟空的蜕变
  18. 可编辑的el-table表格
  19. 一秒获取朋友位置(火绒抓取ip)
  20. element ui中穿梭框等列表文字显示过长隐藏问题处理

热门文章

  1. 【 unity3d 】 NGUI 制作、使用字体
  2. work02_vue页面打印水印
  3. idea git 合并分支
  4. HTML中关于边框(border)的使用
  5. 并行计算模型有哪些?
  6. 独立部署的来客推商城系统到底有何优势
  7. 游戏设计的艺术:一本透镜的书——第十七章 故事和游戏在世界里发生
  8. 51Nod1674[区间的价值 V2]--分块
  9. 使用Flutter建立一个登陆界面
  10. 你知道浪涌保护器的工作原理吗?一张图让你瞬间理解它