Shell exit流程控制语句及用法

系统中是有 exit 命令的,用于退出当前用户的登录状态。但是在 Shell 脚本中,exit 语句是用来退出当前脚本的。也就是说,在 Shell 脚本中,只要碰到了 exit 语句,后续的程序就不再执行,而直接退出脚本。exit 的语法如下:

exit [返回值]

如果在 exit 之后定义了返回值,那么这个脚本执行之后的返回值就是我们自己定义的返回值。可以通过查询 $? 这个变量来査看返回值。如果 exit 之后没有定义返回值,则脚本执行之后的返回值是执行 exit 语句之前最后执行的一条命令的返回值。写一个 exit 语句的例子:

[root@localhost ~]#vi sh/exit.sh
#!/bin/bash
#演示exit的作用
read -p "Please input a number:" -t 30 num
#接收用户的输入,并把输入赋予变量num
y=$(echo $num|sed's/[0-9]//g')
#如果变量num的值是数字,则把num的值替换为空;否则不替换
#把替换之后的值赋予变量y
[-n "$y" ] && echo "Error! Please input a number!" && exit 18
#判断变量y的值,如果不为空,则输出报错信息,退出脚本,退出返回值为18
echo The number is: $num"
#如果没有退出脚本,则打印变量num中的数字

在这个脚本中,大家需要思考,如果输入的不是数字,那么"echo"The number is:$num""这条命令是否会执行?当然不会,因为如果输入的不是数字,那么"[-n"$y"]&&echo"Error! Please input a number!"&&exit 18"这条命令就会执行,exit 一旦执行,脚本就会中止。运行一下这个脚本:

[root@localhost ~]# chmod 755 sh/exit.sh
#给脚本赋予执行权限
[root@localhost ~]# sh/exit.sh
#执行脚本
Please input a number: test
#输入值不是数字,而是test
Error! Please input a number!
输出报错信息,而不会输出test
[root@localhost ~]# echo $?
#查看一下返回值
18
#返回值居然是18
[root@localhost ~]# sh/exit.sh
Please input a number: 10
#输入数字10
The number is: 10
#输出数字10