==================== exit命令被用来结束脚本,就像C语言一样.他也会返回一个值来传给父进程,父进程会判断是否 可用.
每个命令都会返回一个exit状态(有时候也叫return状态).成功返回0,如果返回一个非0值,通 常情况下都会被认为是一个错误码.一个编写良好的UNIX命令,程序,和工具都会返回一个0作为 退出码来表示成功,虽然偶尔也会有例外.
同样的,脚本中的函数和脚本本身都会返回退出状态.在脚本或者是脚本函数中执行的最后的命 令会决定退出状态.在脚本中,exit nnn命令将会把nnn退出码传递给shell(nnn必须是10进制数 0-255).
当一个脚本以不带参数exit来结束时,脚本的退出状态就由脚本中最后执行命令来决定. 1 #!/bin/bash 2 3 COMMAND_1 4 5 . . . 6 7 # 将以最后的命令来决定退出状态 8 COMMAND_LAST 9 10 exit $?
1 #!/bin/bash 2 3 COMMAND1 4 5 . . . 6 7 # 将以最后的命令来决定退出状态 8 COMMAND_LAST
$?读取最后执行命令的退出码.函数返回后,$?给出函数最后执行的那条命令的退出码.这种给 函数返回值的方法是Bash的方法.对于脚本来说也一样.总之,一般情况下,0为成功,非0失败W. Example 6-1 exit/exit状态 ################################Start Script####################################### 1 #!/bin/bash 2 3 echo hello 4 echo $? # 返回0,因为执行成功 5 6 lskdf # 不认识的命令. 7 echo $? # 返回非0值,因为失败了. 8 9 echo 10 11 exit 113 # 将返回113给shell. 12 # To verify this, type "echo $?" after script terminates. 12 # 为了验证这个,在脚本结束的地方使用"echo $?" ################################End Script#########################################
$?对于测试脚本中的命令的结果特别有用(见Example 12-32和Example 12-17). 注意: !逻辑非操作,将会反转test命令的结果,并且这会影响exit状态. Example 6-2 否定一个条件使用! ################################Start Script####################################### 1 true # true是shell内建命令,什么事都不做,就是shell返回0 2 echo "exit status of \"true\" = $?" # 0 3 4 ! true 5 echo "exit status of \"! true\" = $?" # 1 6 # 注意:"!"需要一个空格 7 # !true 将导致一个"command not found"错误 8 # 9 # 如果一个命令以'!'开头,那么将使用Bash的历史机制.就是显示这个命令被使用的历史. 10 11 true 12 !true 13 # 这次就没有错误了. 14 # 他不过是重复了之前的命令(true). ################################End Script#########################################
注意事项: 特定的退出码都有预定的含义(见附录D),用户不应该在自己的脚本中指定他. |