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

相关文章

  • 如何利用 tee 命令调试shell脚本中的管道

    如何利用 tee 命令调试shell脚本中的管道

    在编写shell脚本时,调试是个比较麻烦的事,特别是涉及到多层管道命令的时候,会产生多个中间结果,tee命令的作用是从标准输入中读取数据写入标准输出或文件中,利用它可以从管道中读取中间结果并写入本地临时文件中,通过中间结果可以一步一步的定位到脚本的错误
    2021-05-05
  • Linux使用Split命令分割文件与合并的操作方法

    Linux使用Split命令分割文件与合并的操作方法

    Linux split是一个命令行工具,用于将文件分割成多个较小的文件,它可以按照文件大小、行数或者指定的分割符来进行分割,本文给大家介绍了Linux使用Split命令分割文件与合并的操作方法,需要的朋友可以参考下
    2024-03-03
  • 在Linux与Windows上获取当前堆栈信息的方法

    在Linux与Windows上获取当前堆栈信息的方法

    下面小编就为大家带来一篇在Linux与Windows上获取当前堆栈信息的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • shell实现FizzBuzzWhizz问题示例(拉勾网面试题)

    shell实现FizzBuzzWhizz问题示例(拉勾网面试题)

    这篇文章主要介绍了shell实现FizzBuzzWhizz问题示例(拉勾网面试题),需要的朋友可以参考下
    2014-05-05
  • 阿里云主机一键安装lamp、lnmp环境的shell脚本分享

    阿里云主机一键安装lamp、lnmp环境的shell脚本分享

    这篇文章主要介绍了阿里云主机一键安装lamp、lnmp环境的shell脚本分享,需要的朋友可以参考下
    2014-07-07
  • 详解Linux下读取位图的注意事项

    详解Linux下读取位图的注意事项

    这篇文章主要介绍了详解Linux下读取位图的注意事项的相关资料,需要的朋友可以参考下
    2017-07-07
  • Linux xargs命令详细介绍

    Linux xargs命令详细介绍

    这篇文章主要介绍了 Linux xargs命令详细介绍的相关资料,xargs是给其他命令传递参数的一个过滤器,是构建单行命令的重要组件之一,需要的朋友可以参考下
    2017-01-01
  • linux shell命令的常用快捷键

    linux shell命令的常用快捷键

    下面是一些shell的常用快捷键,快捷键玩熟悉了在一定程度上是可以提高工作效率滴
    2013-01-01
  • scp命令详解(全)

    scp命令详解(全)

    这篇文章主要介绍了scp命令,scp如何做远程拷贝,下面小编帮助大家解决有关scp命令相关知识,需要的朋友可以参考下
    2015-08-08
  • Linux通过命令压缩与解压缩的方法| tar, tar.gz, tar.bz2

    Linux通过命令压缩与解压缩的方法| tar, tar.gz, tar.bz2

    这篇文章主要介绍了Linux通过命令压缩与解压缩的方法| tar, tar.gz, tar.bz2,内容囊括了打包、压缩、解压缩的基本概念,最后通过实例讲解,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-04-04

最新评论