shell脚本返回值及其使用场景的实现

 更新时间:2020年7月11日 15:10  点击:1707

应用场景

在一些应用中(比如Jenkins),嵌入了shell脚本,系统通过shell脚本的返回值来判断执行结果,如果返回值非0,则发生了执行错误,需要中止执行,这在使用单个命令时没有问题。然而,在shell (A)脚本又调用了shell脚本文件(B )时,当被调用的shell脚本B执行过程中发生了错误时,系统不会认为B有问题,而是继续往下执行。这样就会掩盖了问题。

解决

在被调用的shell脚本B中返回错误代码,当被调用的shell脚本B中发生错误时,捕捉该错误代码,然后返回该错误代码,这样系统就能捕获被调用的脚本B的错误代码,而及时中止执行。

1、实现步骤:

(1)获取执行结果代码。使用“$?”获取。

(2)加入执行执行结果代码检测函数,若发现结果代码非0,则返回脚本的执行代码。使用“exit [代码]”表示。

2、示例:

Shell A:

#do something ...
/home/test/B.sh
#do something ...

Shell B(/home/test/B.sh):

check_result()
{
 echo input params:$1

 if [ $1 != 0 ]; then
  echo wahaha
  exit $1
 fi
}

ls /
echo 1.result:$?
check_result $?

cat /xxxyyy
v1=$?
echo 2.result:{v1}
check_result $v1

check_result()为定义的检测函数,当命令的返回码非0时,shell脚本停止执行,返回代码。
v1=$? 保存命令执行返回码,其为临时变量。需要保存留作后用。

附录:

1、shell 返回码

表格 D-1. "保留的"退出码

退出码的值 含义 例子 注释
1 通用错误 let "var1 = 1/0" 各种各样的错误都可能使用这个退出码, 比如"除0错误"
2 shell内建命令使用错误(Bash文档上有说明) 很少看到, 通常情况下退出码都为1
126 命令调用不能执行 程序或命令的权限是不可执行的
127 "command not found" 估计是$PATH不对, 或者是拼写错误
128 exit的参数错误 exit 3.14159 exit只能以整数作为参数, 范围是0 - 255(见脚注)
128+n 信号"n"的致命错误 kill -9 脚本的$PPID $? 返回137(128 + 9)
130 用Control-C来结束脚本 Control-C是信号2的致命错误, (130 = 128 + 2, 见上边)
255* 超出范围的退出状态 exit -1 exit命令只能够接受范围是0 - 255的整数作为参数

2、shell返回码与函数返回码、命令返回码的区别

  • shell返回码,标识整个脚本的执行结果状态,用“exit 返回码”表示。
  • 函数返回码,标识一个函数的执行结果状态,用“return 返回码”表示。
  • 命令返回码,标识一个命令的执行结果状态,在命令执行后,紧跟着获取返回码,用"$?"获取。

到此这篇关于shell脚本返回值及其使用场景的实现的文章就介绍到这了,更多相关shell脚本返回值内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

[!--infotagslink--]

相关文章

  • Java List集合返回值去掉中括号('[ ]')的操作

    这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29
  • Feign接口方法返回值设置方式

    这篇文章主要介绍了Feign接口方法返回值设置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-08
  • Postman动态获取返回值过程详解

    这篇文章主要介绍了Postman动态获取返回值过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-30
  • PHP通用返回值设置

    PHP是现在很多程序比较常用的软件,一些人在写php代码时候,会遇到需要返回值的情况。这里可以统一设置下返回值格式,下面文章就给大家介绍返回值设置实例,下面一起来看看。...2017-07-06
  • shell脚本中用正则表达式匹配IP及Email

    本文我们将会学习一下在shell脚本中如何使用正则表达式,常用的shell正则表达式,当然重点还是如何在shell脚本中用正则表达式匹配IP及Email。 shell也可以使用正则分...2016-11-25
  • 什么是Shell?Shell脚本基础知识详细介绍

    这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell、有多少种Shell、一个Shell脚本代码实例,需要的朋友可以参考下...2020-07-11
  • linux c程序中获取shell脚本输出的实现方法

    以下是对在linux下c程序中获取shell脚本输出的实现方法进行了详细的分析介绍,需要的朋友可以过来参考下...2020-04-25
  • 实例:实现自动清除日期目录shell脚本

    这次文章给大家带来的是一个简单使用的实例:实现自动清除日期目录shell脚本,对脚本感兴趣的下面我们一起来看看那具体的清除日期方法。 实现自动清除日期目录shell...2017-07-06
  • PHP7扩展开发之传参与返回值

    下在我们来看一篇关于PHP7扩展开发之传参与返回值的例子,希望这一篇文章能够帮助到各位朋友,具体的细节如下文介绍. 前言 这次,我们将演示如何在PHP扩展中接受传入的...2016-11-25
  • 详解C语言函数返回值解析

    这篇文章主要介绍了详解C语言函数返回值解析的相关资料,需要的朋友可以参考下...2020-04-25
  • C#打开php链接传参然后接收返回值的关键代码

    这篇文章主要介绍了C#打开php链接传参然后接收返回值的关键代码,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • asp.net EXECUTENONQUERY()返回值介绍

    前些日子作一些数据项目的时候 在ADO.NET 中处理 ExecuteNonQuery()方法时,总是通过判断其返回值是否大于0来判断操作时候成功 。但是实际上并不是这样的,下面详细介绍一下,有需要的朋友可以参考...2021-09-22
  • Golang的func参数及返回值操作

    这篇文章主要介绍了Golang的func参数及返回值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-04
  • node中使用shell脚本的方法步骤

    这篇文章主要介绍了node中使用shell脚本的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-21
  • C++ 常量成员常量返回值详解

    这篇文章主要介绍了C++ 常量成员常量返回值详解,需要的朋友可以参考下...2020-04-25
  • Java Map.get()返回指定键所映射的值

    这篇文章主要介绍了Java Map.get()返回指定键所映射的值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-04
  • python基础之函数的返回值

    这篇文章主要介绍了Python函数返回值,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下...2021-10-22
  • C# WebApi 接口返回值不困惑:返回值类型详解

    这篇文章主要介绍了C# WebApi 接口返回值不困惑:返回值类型详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • MySQL数据库的shell脚本自动备份

    这篇文章主要介绍了MySQL数据库的shell脚本自动备份的相关资料,网站或应用的后台都有备份数据库的功能按钮,但需要去手工执行。我们需要一种安全的,每天自动备份的方法需要的朋友可以参考下...2017-03-14
  • 使用C#代码获取存储过程返回值

    这篇文章主要介绍了使用C#代码获取存储过程返回值,需要的朋友可以参考下...2020-06-25