-----------------------------------------------------------------Sun-------------------------------------------------------------------
一、退出状态码
1.退出
exit 被用来结束一个脚本,它也返回一个值,并且这个值会传递给脚本的父进程,父进程会使用这个值做下一步的处理。
2.退出状态码
每个命令都会返回一个退出状态码(有时候也被称为返回状态)。
成功的命令返回 0,不成功的命令返回非零值,非零值通常都被解释成一个错误码。
同样的,脚本中的函数和脚本本身也会返回退出状态码。在脚本或者是脚本函数中执行的最后的命令会决定退出状态码。
在脚本中,exit nnn 命令将会nnn退出码传递给shell(nnn必须是十进制数,范围必须是0-255)。
当脚本以不带参数的exit命令来结束时,脚本的退出状态码就由脚本中最后执行的命令来决定(就是 exit 之前的命令)
#!/bin/bash
echo hello
echo $? #退出状态为0,即命令正常执行
lskdf #无效命令
echo $? #状态码非零,命令执行失败
exit 113 #退出状态码
# echo $? 查看得知退出码为 113
$? 指代的是上一条指令的执行结果。
二、反转一个条件的用法
#!/bin/bash
true
echo "exit status of \"true\" = $? " #exit status of "true" = 0
! true
echo "exit status of \"!true\" = $? " #exit status of "! true" = 1
! 和指令间需要一个空格。
若是一个命令以!开头,会启用Bash的历史机制
$ true
$ echo $?
0
$ !true
$ true //输入!true会自动在命令行弹出true
$ echo $?
0
这一次就没有反转结果,只是重复了之前的命令true。