Linux 命令exit - 退出当前shell
from:
http://blog.163.com/bobile45@126/blog/static/96061992201311712658570/
用途说明
exit命令用于退出当前shell,在shell脚本中可以终止当前脚本执行。
常用参数
格式:exitn
退出。设置退出码为n。(Causetheshelltoexitwithastatusofn.)
格式:exit
退出。退出码不变,即为最后一个命令的退出码。(Ifnisomitted,theexitstatusisthatofthelastcommandexecuted.)
格式:$?
上一个命令的退出码。
格式:trap"commands"EXIT
退出时执行commands指定的命令。(AtraponEXITisexecutedbeforetheshellterminates.)
退出码(exitstatus,或exitcode)的约定:
0表示成功(Zero-Success)
非0表示失败(Non-Zero-Failure)
2表示用法不当(IncorrectUsage)
127表示命令没有找到(CommandNotFound)
126表示不是可执行的(Notanexecutable)
>=128信号产生
man3exit写道
TheCstandardspecifiestwoconstants,EXIT_SUCCESSandEXIT_FAILURE,thatmaybepassedtoexit()toindicate
successfulorunsuccessfultermination,respectively.
以下摘自/usr/include/stdlib.h
C代码收藏代码
#defineEXIT_FAILURE1/*Failingexitstatus.*/
#defineEXIT_SUCCESS0/*Successfulexitstatus.*/
BSD试图对退出码标准化。
man3exit写道
BSDhasattemptedtostandardizeexitcodes;seethefile<sysexits.h>.
以下摘自/usr/include/sysexits.h
C代码收藏代码
#defineEX_OK0/*successfultermination*/
#defineEX__BASE64/*basevalueforerrormessages*/
#defineEX_USAGE64/*commandlineusageerror*/
#defineEX_DATAERR65/*dataformaterror*/
#defineEX_NOINPUT66/*cannotopeninput*/
#defineEX_NOUSER67/*addresseeunknown*/
#defineEX_NOHOST68/*hostnameunknown*/
#defineEX_UNAVAILABLE69/*serviceunavailable*/
#defineEX_SOFTWARE70/*internalsoftwareerror*/
#defineEX_OSERR71/*systemerror(e.g.,can'tfork)*/
#defineEX_OSFILE72/*criticalOSfilemissing*/
#defineEX_CANTCREAT73/*can'tcreate(user)outputfile*/
#defineEX_IOERR74/*input/outputerror*/
#defineEX_TEMPFAIL75/*tempfailure;userisinvitedtoretry*/
#defineEX_PROTOCOL76/*remoteerrorinprotocol*/
#defineEX_NOPERM77/*permissiondenied*/
#defineEX_CONFIG78/*configurationerror*/
#defineEX__MAX78/*maximumlistedvalue*/
使用示例
示例一退出当前shell
[root@new55~]#
[root@new55~]#exit
logout
示例二在脚本中,进入脚本所在目录,否则退出
Bash代码收藏代码
cd$(dirname$0)||exit1
示例三在脚本中,判断参数数量,不匹配就打印使用方式,退出
Bash代码收藏代码
if["$#"-ne"2"];then
echo"usage:$0<area><hours>"
exit2
fi
示例四在脚本中,退出时删除临时文件
Bash代码收藏代码
trap"rm-ftmpfile;echoBye."EXIT
示例五检查上一命令的退出码
Bash代码收藏代码
./mycommand.sh
EXCODE=$?
if["$EXCODE"=="0"];then
echo"O.K"
fi