iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Shell中关于exit0的那些坑
  • 712
分享到

Shell中关于exit0的那些坑

2024-04-02 19:04:59 712人浏览 安东尼
摘要

在 shell 编程中,需慎用 exit 0! 首先必须弄清楚 exit 0 不是 return 0, 区别在于 return 0 用于函数中,表示函数执行成功返回 0;而 exit

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

--结束END--

本文标题: Shell中关于exit0的那些坑

本文链接: https://www.lsjlt.com/news/140233.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Shell中关于exit0的那些坑
    在 shell 编程中,需慎用 exit 0! 首先必须弄清楚 exit 0 不是 return 0, 区别在于 return 0 用于函数中,表示函数执行成功返回 0;而 exit...
    99+
    2024-04-02
  • Python中的那些“坑”
    这里要看三组代码: # 第一组: >>>a=256 >>>b = 256 >>>a is b # 第二组: >>>a = 257 >>>b = ...
    99+
    2023-01-30
    Python
  • python中关于os.path.pardir的一些坑
    目录关于os.path.pardir的一些坑python中os.path常用模块1 BASE_DIR变量2 os.listdir()的用法3 如下所示4 os.path.splite...
    99+
    2024-04-02
  • 关于 sudo 的那些事儿
    觉得你已经了解了 sudo 的所有知识了吗?再想想。大家都知道 sudo,对吗?默认情况下,该工具已安装在大多数 Linux 系统上,并且可用于大多数 BSD 和商业 Unix 变体。不过,在与数百名 ...
    99+
    2023-06-05
  • python3中import的那么些坑
    多模块开发时注意事项 通过from 模块 import 变量,此时相当于给一个变量赋值 import time # 相当于在本文件中创建了一个名为time变量,这个变量指向python标准库中的time模块 from time ...
    99+
    2023-01-31
    import
  • 关于C++的坑有哪些
    这篇文章主要讲解了“关于C++的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“关于C++的坑有哪些”吧!1. string的字符串拼接,导致coredump该问题的核心点在于第9行,...
    99+
    2023-06-16
  • 关于vue中api统一管理的那些事
    目录前情提要针对小项目而言(没有单独二次封装axios)无需管理,直接干。仅限于接口数量在20-30的统一api.js文件管理针对非小型项目而言(进行axios的二次封装)api统一...
    99+
    2024-04-02
  • 关于spring5的那些事:@Indexed 解密
    目录哪些资源会被索引?如何使用?原理随着云原生的发展,很多技术会被重新掂量,重新定义,历来技术的发展也是遵循天时地利,以其势尽享其利。再云原生下,jdk的最大的问题在于笨重(几百mb...
    99+
    2024-04-02
  • 细数java for循环中的那些坑
    目录1、循环语句的几种语法2、循环中需要注意的点2.1 循环如果满足了查找的需求 break 直接跳出,不要浪费性能2.2 循环集合的时候能用for each 的尽量用for eac...
    99+
    2024-04-02
  • 浅谈React Router关于history的那些事
    如果你想理解React Router,那么应该先理解history。更确切地说,是history这个为React Router提供核心功能的包。它能轻松地在客户端为项目添加基于loc...
    99+
    2024-04-02
  • 报表选型中那些想不到的坑
    详情链接:http://c.raqsoft.com.cn/article/1571024764129r=gxy...
    99+
    2023-06-02
  • 那些年踩过的Dubbo坑有哪些
    那些年踩过的Dubbo坑有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言微服务架构在如今的9102年已经不是什么新鲜的话题了,但是怎么做好微服务架构,却又是一个永恒...
    99+
    2023-06-19
  • 解决spring data redis的那些坑
    目录spring data redis的那些坑1. 使用lua脚本,返回类型解析错误2. spring redis基于lettuce配置Client必须显示调用spring data...
    99+
    2024-04-02
  • Python里那些深不见底的“坑”
    Python是一门清晰简洁的语言,如果你对一些细节不了解的话,就会掉入到那些深不见底的“坑”里,下面,我就来总结一些Python里常见的坑。 列表创建和引用 嵌套列表的创建 使用*号来创建一个嵌套的list: li = [[]...
    99+
    2023-01-31
    见底 Python
  • 关于pt-archiver和自增主键的那些事
    目录前言分析解析结论本文Percona Blog 的译文,原文移步文章末尾的 阅读原文。 前言 pt-archiver 是一款常见的 表清理或者归档工具。 MySQL 中删除大表之前...
    99+
    2024-04-02
  • Flutter中关于angle的踩坑记录
    这个问题是我最近做业务开发和业余开发都遇到的,这里的 angle 指的是旋转弧度。不是旋转角度。 先看一下我使用 angle 的场景吧: 图一中使用了 canvas.drawA...
    99+
    2024-04-02
  • 关于electron打包的坑
    首先electron打包的方式有两种 通过electron-builder通过electron-package 两种方式,electron-builder打包的话扩展性更强,包也较小...
    99+
    2023-03-01
    electron打包 electron打包报错
  • 详解关于Android Studio中安装和gradle的一些坑
    本人从开始用Android Studio到现在已经快一年了吧,在我刚开始用的时候Android Studio还是1.2的版本。当时安装会因为国内墙的缘故,导致下载SDK步骤卡死无法安装。最近的版本似乎都没出现这个问题,但是还是要吐槽一下最近...
    99+
    2023-05-30
    android studio gradle
  • Java Bean转Map的那些踩坑实战
    目录一、背景二、那些坑2.0 测试对象2.1 JSON 反序列化了类型丢失2.1.1 问题复现2.2.2 问题描述2.2 BeanMap 转换属性名错误2.2.1 commons-b...
    99+
    2024-04-02
  • 关于区块链那些事(用Python3体现
    想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答! 未经允许,拒绝转载,https://www.liankexing.com/no... 要弄懂什么是区块链技术的前提,首先要知道什么是md5算法。给一个最...
    99+
    2023-01-31
    区块
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作