每一个命令都能返回一个退出状态(有时也看做返回状态).一个命令执行成功返回0,一个执行不成功的命令则返回一个非零值,此值通常可以被解释成一个对应的错误值。除了一些例外的情况,一个行为端庄的UNIX命令,程序或是软件包执行成功能返回0的作为退出码。
同样的,在脚本里的函数和脚本自身都会返回一个退出状态码。在脚本或函数里被执行的最后一个命令将决定退出状态码。在一个脚本里,exit nnn 命令将会返回shell一个nnn的退出状态码。(nnn必须是一个在0-255范围的十进制整数)。
如果一个脚本以不带参数的exit命令结束,脚本的退出状态码将会是执行exit命令前的最后一个命令的退出码。
#!/bin/bash COMMAND_1 . . . # 脚本将会以最后命令COMMAND_LAST的状态码退出。 COMMAND_LAST exit
脚本结束没有exit,不带参数的exit和exit $?三者是等价的。
#!/bin/bash COMMAND_1 . . . # 会以最后命令的退出码退出脚本. COMMAND_LAST exit $?
#!/bin/bash COMMAND1 . . . # 会以最后命令的退出码退出脚本. COMMAND_LAST
$?变量保存了最后一个命令执行后的退出状态。当一个函数返回时,$?保存了函数里最后一个命令的退出状态码。这就是Bash里函数返回值的处理办法。当一个脚本运行结束,$? 变量保存脚本的退出状态,而脚本的退出状态则是脚本中最后一个已执行命令的退出状态。并且依照惯例,0表示执行成功,1-255的整数范围表示错误。