一、shell -break、continue、exit、return
break(循环控制)、continue(循环控制)、exit(退出脚本)、return(退出函数)。
1.break、continue在条件语句及循环语句(for、while、if等)中用于控制程序的走向;
2.exit则用于终止所有语句并退出当前脚本,除此之外,exit还可以返回上一次程序或命令的执行状态值给当前Shell;
3.return类似于exit,只不过return仅用于在函数内部
返回函数执行的状态值。
for ((i=1;i<5;i++ ))
do
if [ $i -eq 3 ]
then
# break
# continue
# exit
fi
echo $i
done
echo OK
break输出的结果
1
2
OK
continue输出的结果
1
2
4
OK
exit输出的结果
1
2
#!/bin/bash
dir=/root/shell
grep -e '^ .*cp ' -e '^cp' $dir/* >Cp_Check.txt
if [ ! -s Cp_Check.txt ]
then
return 0
fi
#直接执行脚本是会报错的,return仅用于函数中:
#return: can only`return' from a function or sourced script
总结return 与 exit的区别
1、exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程。而return是返回函数值并退出函数
2、return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
二、附录例程:
参考:https://www.cnblogs.com/moox/p/12886517.html
#!/bin/bash
if [ $# -ne 1 ];then
echo $"usage: $0 {break|continue|exit|return}"
exit 1
fi
function test(){
for((i=0;i<=5;i++))
do
if [ $i -eq 3 ];then
$*;
fi
echo $i
done
echo "I am in func"
}
test $*
func_ret=$?
if [ `echo $*|grep return|wc -l` -eq 1 ];then
echo "return's exit status: $func_ret"
fi
echo "OK"
[root@zabbix 0513]# sh test.sh break
0
1
2
I am in func === 传入break时,退出test函数,继续顺序执行test函数以下的
OK
[root@zabbix 0513]# sh test.sh continue
0
1
2 ===下面没有3,直接跳过了
4
5
I am in func
OK
[root@zabbix 0513]# sh break.sh "exit 119"
0
1
2 === 直接退出shell
[root@zabbix 0513]# echo $?
119 === 返回了119,即传入的值
[root@zabbix 0513]# sh break.sh "return 119"
0
1
2
return's exit status: 119
OK