42 Linux shell编程-命令详解(exit、break、continue)
1、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
2、Shell break和continue循环控制语句及其用法
break语句
当程序执行到 break 语句时,会结束整个当前循环。而 continue 语句也是结束循环的语句,不过 continue 语句只会结束单次当前循环,继续下次循环。我们画一张示意图解释一下 break 语句,如图 1 所示。

图 1 break 语句示意图
【例 1】
[root@localhost ~]# vi sh/break.sh
#!/bin/bash
#演示break眺出循环
for ((i=1;i<=10;i=i+1))
#循环10次
do
if ["$i" -eq 4]
#如果变量 i 的值等于4
then
break
#则退出整个循环
fi
echo $i
#输出变量i的值
done
运行一下这个脚本,因为一旦变量的值等于 4,整个循环就会跳出,所以应该只能循环 3 次。
[root@localhost ~]# chmod 755 sh/break.sh [root@localhost ~]# sh/break.sh 1 2 3
continue语句
再来看看 continue 语句,它也是结束循环的语句,但它只单次当前循环。我们也画一张示意图来说明一下 continue 语句,如图 2 所示。

图 2 continue 语句示意图
还是用刚刚的脚本,不过退出语句换成 continue 语句,看看会发生什么情况。
运行一下这个脚本:
[root@localhost ~]# chmod 755 sh/continue.sh #赋予执行权限 [root@localhost ~]# sh/continue.sh 1 2 3 5 #少了4这个输出 6 7 8 9 10
continue 语句只会退出单次当前循环,并不会影响后续的循环,所有只少 4 这个输出。
浙公网安备 33010602011771号