Shell—关于exit 0的那些坑

本文深入探讨了Shell编程中exit与return的区别,通过实例解释了如何正确使用这两个命令。exit用于程序退出,return用于函数返回,不当使用exit0会导致环境部署失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于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 命令或者语法之前,最好先写个脚本验证后使用,形成自测的好习惯!
好了,该睡觉了,明天还得起来搬砖 ^_ ^

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Caso_卡索

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值