iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Shell中关于exit 0的那些坑
  • 709
分享到

Shell中关于exit 0的那些坑

Shellexit0 2022-06-05 00:06:10 709人浏览 薄情痞子
摘要

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

shell 编程中,需慎用 exit 0!

首先必须弄清楚 exit 0 不是 return 0, 区别在于 return 0 用VGqldKkU于函数中,表示函数执行成功返回 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 exit 0内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

--结束END--

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

本文链接: https://www.lsjlt.com/news/21578.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
  • Shell中exit 0坑实例分析
    这篇文章主要讲解了“Shell中exit 0坑实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell中exit 0坑实例分析”吧!在 shell 编程中,需慎用...
    99+
    2023-06-29
  • shell中的exit 0和exit 1的区别是什么
    在shell中,exit 0和exit 1是退出命令(exit command)。它们用于在脚本执行过程中,指示脚本的退出状态。- ...
    99+
    2023-09-21
    shell
  • SHELL中的exit 0 和 exit 1有什么区别
    在SHELL脚本中,exit 0和exit 1是用来表示命令或脚本的执行状态的两个特定的退出码。这两个退出码有以下区别:1. exi...
    99+
    2023-09-16
    SHELL
  • Python中的那些“坑”
    这里要看三组代码: # 第一组: >>>a=256 >>>b = 256 >>>a is b # 第二组: >>>a = 257 >>>b = ...
    99+
    2023-01-30
    Python
  • 关于PHP中当变量的值为0时的坑
    当变量的值为 0 时的坑PHP 是一种类型宽松的语言,它在变量的类型、值和运算过程上都具有极大的灵活性,然而伴随这种灵活性,也会带来一些潜在的问题。本文主要讨论 PHP 中变量不为空并且值为 0 时常常会被误判为“空”的情况。在 PHP 中...
    99+
    2023-05-14
  • 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
  • Shell中exit和return的区别有哪些
    这篇文章主要介绍了Shell中exit和return的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.exit命令exit命令是Shell内建命令,用于退出当前S...
    99+
    2023-06-09
  • 关于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
  • 关于pt-archiver和自增主键的那些事
    目录前言分析解析结论本文Percona Blog 的译文,原文移步文章末尾的 阅读原文。 前言 pt-archiver 是一款常见的 表清理或者归档工具。 MySQL 中删除大表之前...
    99+
    2024-04-02
  • Flutter中关于angle的踩坑记录
    这个问题是我最近做业务开发和业余开发都遇到的,这里的 angle 指的是旋转弧度。不是旋转角度。 先看一下我使用 angle 的场景吧: 图一中使用了 canvas.drawA...
    99+
    2024-04-02
  • 详解关于Android Studio中安装和gradle的一些坑
    本人从开始用Android Studio到现在已经快一年了吧,在我刚开始用的时候Android Studio还是1.2的版本。当时安装会因为国内墙的缘故,导致下载SDK步骤卡死无法安装。最近的版本似乎都没出现这个问题,但是还是要吐槽一下最近...
    99+
    2023-05-30
    android studio gradle
  • 详解关于spring bean名称命名的那些事
    目录前言02源码查看01从main方法直接调试断点02带着问题查看,靠猜加验证的方式03源码验证04总结前言 用了多年spring,一直想当然把spring默认的beanName当成...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作