Shell入门-特殊命令break、continue、exit、return
特殊命令:break、continue、exit、return
- break(循环控制)
- continue(循环控制)
- exit(退出脚本)
- return(退出函数)
break、continue在条件语句及循环语句(for、while、if等)中用于控制程序的走向;而exit则用于终止所有语句并退出当前脚本,除此之外,exit还可以返回上一次程序或命令的执行状态值给当前Shell; return类似于exit,只不过return仅用于在函数内部返回函数执行的状态值。
break n
:如果省略n,则表示跳出整个循环,n表示跳出循环的层数continue n
:如果省略n,则表示跳过本次循环,忽略本次循环的剩余代码,进入循环的下一次循环。n表示退到第n层继续循环exit n
:退出当前Shell程序,n为上一次程序执行的状态返回值。n也可以省略,在下一个Shell里通过$?
接收exit n的n值return n
:用于在函数里作为函数的返回值,以判断函数执行是否正确。在下一个Shell里通过$?
接收exit n的n值
实例一
通过break命令跳出整个循环,执行循环下面的其他程序
[root@localhost shell]# cat 12_1_1.sh
#!/bin/bash
#***********************************************
#Author: luotianhao
#Mail: tianhao.luo@hand-china.com
#Version: 1.0
#Date: 2021-03-16
#FileName: 12_1_1.sh
#Description: This is a test script.
#***********************************************
[ $# -ne 1 ] && {
echo $"usage:$0 {break|continue|exit|return}"
#<=====退出脚本
exit 1
}
test() {
for((i=0;i<=5;i++))
do
[ $i -eq 3 ] && {
#<====接收函数外的参数,是{break|continue|exit|return}中的一个
$*;
}
echo $i
done
echo "i am in func"
}
test $*
func_ret=$?
[ $(echo $* |grep return|wc -l) -eq 1 ] && {
echo "return's exit status:$func_ret "
}
echo "ok"
[root@localhost shell]# sh 12_1_1.sh
usage:12_1_1.sh {break|continue|exit|return}
[root@localhost shell]# sh 12_1_1.sh break
0
1
2
i am in func
ok
[root@localhost shell]# sh 12_1_1.sh continue
0
1
2
4
5
i am in func
ok
[root@localhost shell]# sh 12_1_1.sh exit
0
1
2
[root@localhost shell]# sh 12_1_1.sh return
0
1
2
return's exit status:0
ok