三、shell -break、continue、exit、return

一、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
posted @ 2020-10-23 16:24  hostid  阅读(253)  评论(0编辑  收藏  举报