最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

shell中exit 0和exit 1的區(qū)別有哪些

 更新時間:2023年11月09日 09:23:22   作者:Locutus  
exit1和exit是shell中的兩個命令,用于退出當前的shell進程,本文就來介紹一下shell中exit 0和exit 1有哪些區(qū)別,具有一定的參考價值,感興趣的可以了解一下

定義

  • exit 0 :正常運行程序并退出程序。使用echo $? 返回0,也就是說調(diào)用環(huán)境認為你的程序執(zhí)行正常。

  • exit 1 :非正常運行導致退出程序,也可以是其他數(shù)字。系統(tǒng)程序?qū)τ诔绦蜻\行錯誤是有約定含義的,不為 0 就表示程序運行出錯。調(diào)用環(huán)境根據(jù)這個返回值,判斷你的程序運行是否正常。

  • return :用于返回值。若在主函數(shù)中,則會退出函數(shù)并返回一個值。

區(qū)別

  • return是一個關(guān)鍵字; exit 是一個函數(shù)

  • return是編程語言級別,它表示調(diào)用堆棧的返回;exit是系統(tǒng)調(diào)用級別,它表示了一個進程的結(jié)束

  • return是函數(shù)的退出(返回);exit是進程的退出

  • return是編程語言提供,exit是操作系統(tǒng)提供(或者函數(shù)庫中給出)

  • return用于結(jié)束一個函數(shù)的執(zhí)行,將函數(shù)的執(zhí)行信息傳出個其他調(diào)用函數(shù)使用;exit用于退出應(yīng)用程序,刪除進程使用的內(nèi)存空間,并將應(yīng)用程序的一個狀態(tài)返回給OS,這個狀態(tài)標識了應(yīng)用程序的一些運行信息,這個信息和操作系統(tǒng)有關(guān),一般 0 為正常退出,非0 為異常退出

  • 非主函數(shù)中調(diào)用return和exit效果很明顯,但是在main函數(shù)中調(diào)用return和exit的現(xiàn)象就很模糊,多數(shù)情況下現(xiàn)象都是一致的

用途

如果你使用腳本 a.sh 調(diào)用腳本 b.sh ,在 a.sh 中判斷 b.sh 是否正常返回,需要在 b.sh 中相關(guān)位置采用 exit 0 或 exit 1 來標識。執(zhí)行完a.sh后,使用echo $?判斷返回值。

在 shell 編程中,要慎用 exit 0。首先必須弄清楚 exit 0 不是 return 0, 區(qū)別在于 return 0用于函數(shù)中,表示函數(shù)執(zhí)行成功并返回 0;而 exit 0 則表示當前程序執(zhí)行成功并且直接退出當前執(zhí)行腳本或程序。相反,return -1 表示函數(shù)執(zhí)行失敗返回錯誤; exit 1 (或大于 1)表示程序執(zhí)行失敗并退出程序。exit 用來返回進程結(jié)束時的狀態(tài),一般在父shell中使用變量 $? 來獲取子shell 的退出狀態(tài),判斷子shell是否執(zhí)行成功。

雖然兩者區(qū)別很明顯,也很容易理解,為什么專門要做一下記錄?確實出現(xiàn)了這樣的一個錯誤,本應(yīng)是在子shell中執(zhí)行使用 exit 0 和 exit 1 的函數(shù)接口,父shell對其進程返回值 { $? } 做判斷操作,結(jié)果有人直接在環(huán)境腳本中加了該函數(shù)接口做判斷,結(jié)果直接導致環(huán)境部署失敗。

注:在接口函數(shù)中使用 return,在需要退出執(zhí)行(子 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

 到此這篇關(guān)于shell中exit 0和exit 1有哪些區(qū)別的文章就介紹到這了,更多相關(guān)shell exit 0和exit 1內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

疏附县| 霸州市| 从江县| 屏山县| 赤壁市| 沁水县| 弥勒县| 会东县| 瓦房店市| 调兵山市| 图木舒克市| 巨鹿县| 绥芬河市| 华阴市| 营口市| 焉耆| 衡东县| 监利县| 梨树县| 剑川县| 获嘉县| 彭阳县| 鲁山县| 伊吾县| 临夏县| 萨嘎县| 桓仁| 东至县| 曲阜市| 历史| 巴彦县| 伊川县| 大丰市| 内江市| 玛沁县| 色达县| 龙里县| 盐源县| 沛县| 广平县| 环江|