Shell中关于exit 0的那些坑

 更新时间:2022年02月23日 15:08:45   作者:Caso_卡索  
在 shell 编程中,需慎用 exit 0,本文主要介绍了Shell中关于exit 0的那些坑,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

在 shell 编程中,需慎用 exit 0!

首先必须弄清楚 exit 0 不是 return 0, 区别在于 return 0 用于函数中,表示函数执行成功返回 0;而 exit 0 则代表你当前程序执行成功并且会直接退出当前所执行的脚本或者程序,相反,return -1 一般表示函数执行失败返回错误; exit 1 (或大于 1)表示程序执行失败并退出程序。exit 用来返回进程结束时的状态,一般在父shell中使用 $? 变量来获取子shell 的退出状态,判断子shell是否执行成功。

虽然两者区别很明显,也很容易理解,为什么专门要做一下记录?确实出现了这样的一个错误,本应是在子shell中执行使用 exit 0 和 exit 1 的函数接口,父shell对其进程返回值 { $? } 做判断操作,结果有人直接在环境脚本中加了该函数接口做判断,结果直接导致环境部署失败,显然,悲剧了。。。哈哈,所以想着写篇博客记录一下

注:在接口函数中使用 return,在需要退出执行(子 shell)程序时使用 exit举个小例

#/bin/bash

function check_extern_input()
{
    read param
    if [ "${param}" == "exit 0" ]
    then
        echo "successful exit process right now!"
        exit 0
    elif [ "${param}" == "exit 1" ]
    then
        echo "failed exit process right now!"
        exit 1
    elif [ "${param}" == "return 0" ]
    then
        echo "func normal return, process not exit, Enter go on..."
        return 0
    else
        echo "Input again:"
    fi        
}
while true 
do
    check_extern_input
done

在使用不熟悉的 shell 命令或者语法之前,最好先写个脚本验证后使用,形成自测的好习惯!

ps:shell脚本中exit0和exit1的含义

exit  0:正常运行程序并退出程序;

exit  1:非正常运行导致退出程序;

exit 0 可以告知你的程序的使用者:你的程序是正常结束的。如果 exit 非 0 值,那么你的程序的使用者通常会认为
你的程序产生了一个错误。
在 shell 中调用完你的程序之后,用 echo $? 命令就可以看到你的程序的 exit 值。在 shell 脚本中,通常会根据
上一个命令的 $? 值来进行一些流程控制。0代表程序正确的执行,如下图例子所示:

到此这篇关于Shell中关于exit 0的那些坑的文章就介绍到这了,更多相关Shell exit 0内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • shell脚本操作mysql数据库删除重复的数据

    shell脚本操作mysql数据库删除重复的数据

    今天小编就为大家分享一篇关于shell脚本操作mysql数据库删除重复的数据,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • LINUX 生产环境搭建推荐教程

    LINUX 生产环境搭建推荐教程

    由于linux生产环境搭建步骤非常多,很繁琐而且又是必不可少的步骤。虽然已经做过很多次,但是由于步骤繁琐,很容易忘记,下面小编抽个时间把linux生产环境搭建步骤记录下来,分享在脚本之家平台,以便需要之时使用
    2015-10-10
  • 详解adb shell 常用命令

    详解adb shell 常用命令

    这篇文章主要介绍了详解adb shell 常用命令,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Shell脚本中管道的几种使用实例讲解

    Shell脚本中管道的几种使用实例讲解

    今天小编就为大家分享一篇关于Shell脚本中管道的几种使用实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Linux下的fdisk指令用法场景分析

    Linux下的fdisk指令用法场景分析

    在Linux系统中,对磁盘进行分区是管理和利用磁盘空间的重要任务之一,本篇将以通俗易懂的方式,详细介绍fdisk指令的前世今生、功能、用法和应用场景,帮助读者全面了解fdisk指令,并掌握其在磁盘管理和问题排查方面的应用,需要的朋友可以参考下
    2024-01-01
  • 浅谈shell的一些循环格式

    浅谈shell的一些循环格式

    这篇文章主要介绍了浅谈shell的一些循环格式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 使用shell脚本取出服务器图片的方法

    使用shell脚本取出服务器图片的方法

    Shell 脚本(shell script),是一种为 shell 编写的脚本程序。下面通过本文给大家介绍使用shell脚本取出服务器图片的方法,需要的朋友参考下吧
    2017-12-12
  • shell学习教程获取命令行参数示例

    shell学习教程获取命令行参数示例

    这篇文章主要介绍了shell学习中的基础知识的获取命令行参数示例,需要的朋友可以参考下
    2014-03-03
  • Shell中变量作用域的介绍与使用命令

    Shell中变量作用域的介绍与使用命令

    作用域是我们在日常学习或者工作中经常会遇到的一个问题,下面这篇文章主要给大家介绍了关于Shell中变量作用域的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面跟着小编来一起学习学习吧。
    2017-08-08
  • Linux压缩和解压命令大全之tar、gzip和zip详细教程

    Linux压缩和解压命令大全之tar、gzip和zip详细教程

    本文介绍了常用的压缩和解压命令,包括tar、gzip和zip,通过使用这些命令,我们可以方便地对文件和目录进行压缩和解压操作,从而节省存储空间和提高传输效率,需要的朋友可以参考下
    2023-09-09

最新评论