linux shell

关注公众号 jb51net

关闭
首页 > 脚本专栏 > linux shell > shell exit 0和exit 1

shell中exit 0和exit 1的区别有哪些

作者:Locutus

exit1和exit是shell中的两个命令,用于退出当前的shell进程,本文就来介绍一下shell中exit 0和exit 1有哪些区别,具有一定的参考价值,感兴趣的可以了解一下

定义

区别

用途

如果你使用脚本 a.sh 调用脚本 b.sh ,在 a.sh 中判断 b.sh 是否正常返回,需要在 b.sh 中相关位置采用 exit 0 或 exit 1 来标识。执行完a.sh后,使用echo $?判断返回值。

在 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中exit 0和exit 1有哪些区别的文章就介绍到这了,更多相关shell exit 0和exit 1内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文