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

 更新时间:2020年05月19日 10:00:56   作者:hongweigg  
这篇文章主要介绍了shell脚本返回值及其使用场景的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

应用场景

在一些应用中(比如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脚本返回值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Shell脚本读取标准ini配置文件Demo

    Shell脚本读取标准ini配置文件Demo

    这篇文章主要介绍了Shell脚本读取标准ini配置文件Demo,本文直接给出代码实例,需要的朋友可以参考下
    2015-05-05
  • 详解Linux下的文件标述符和文件指针

    详解Linux下的文件标述符和文件指针

    这篇文章主要介绍了详解Linux下的文件标述符和文件指针的相关资料,需要的朋友可以参考下
    2017-05-05
  • Linux 中的export与alias命令详解

    Linux 中的export与alias命令详解

    export和alias都是用来简化命令行输入的工具。export用于设置环境变量,环境变量是一些系统级别的变量,用于指定一些系统的默认值或者搜索路径等,这篇文章主要介绍了Linux 中的export与alias命令,需要的朋友可以参考下
    2023-04-04
  • linux shell txt转换成html的实现代码

    linux shell txt转换成html的实现代码

    这篇文章主要介绍了linux shell txt转换成html的实现代码,需要的朋友可以参考下
    2016-11-11
  • Linux Shell脚本系列教程(二):终端打印命令详解

    Linux Shell脚本系列教程(二):终端打印命令详解

    这篇文章主要介绍了Linux Shell脚本系列教程(二):终端打印命令详解,本文着重讲解了echo终端打印、printf终端打印两个打印出输出命令,需要的朋友可以参考下
    2015-06-06
  • Shell实现批量操作文件的方法详解

    Shell实现批量操作文件的方法详解

    这篇文章主要为大家总结了一下Shell实现批量操作文件的命令,例如:查找某文件夹下指定文件所在的路径、批量删除某个文件夹下的指定文件,感兴趣的可以了解一下
    2022-09-09
  • linux常用命令小结,排查问题效率高10倍

    linux常用命令小结,排查问题效率高10倍

    这篇文章主要为大家详细介绍了linux中常用的6个命令,可以让我们排查问题效率高10倍,文中的示例代码讲解详细,感兴趣的小伙伴可以参考下
    2023-08-08
  • shell脚本实现ftp上传下载文件功能

    shell脚本实现ftp上传下载文件功能

    这篇文章主要介绍了shell脚本实现ftp上传下载文件功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-08-08
  • Linux 中(加、减、乘、除)实例详解

    Linux 中(加、减、乘、除)实例详解

    这篇文章主要介绍了 Linux 中(加、减、乘、除)实例详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • 一些你必须要熟练掌握的git命令

    一些你必须要熟练掌握的git命令

    git 现在的火爆程度非同一般,它被广泛地用在大型开源项目,团队开发,以及独立开发者,甚至学生之中。下面这篇文章主要给大家分享了一些你必须要熟练掌握的git命令,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧。
    2018-02-02

最新评论