第六章 退出与退出状态
跟C程序类似, 命令被用来结束脚本。同时,它也会返回一个值,返回值可以被交给父进程。
每个命令都会返回一个退出状态(exit status),有时也叫做返回状态(return status)或退出码(exit code)。命令执行成功返回0,如果返回一个非0值,通常情况下会被认为是一个错误代码。一个运行状态良好的UNIX命令、程序和工具在正常执行退出后都会返回一个0的退出码,当然也有例外。
同样地,脚本中的函数和脚本本身也会返回一个退出状态。在脚本或者脚本函数中执行的最后的命令会决定它们的退出状态。在脚本中,exit nnn 命令将会把nnn退出状态码传递给shell(nnn 必须是 0-255 之间的整型数)。
$? 读取上一个执行命令的退出状态。在一个函数返回后, 给出函数最后执行的那条命令的退出状态。这就是Bash函数的”返回值”。^1
在执行后,$? 给出最后执行的那条命令的退出状态。
在脚本终止后,命令行下键入$?会给出脚本的退出状态,即在脚本中最后一条命令执行后的退出状态。一般情况下,0为成功,1-255为失败。
$? 对于测试脚本中的命令的执行结果特别有用(查看样例 16-35和样例 16-20)。
样例 6-2. 否定一个条件使用!