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
posted @ 2021-03-16 15:15  春刀c  阅读(359)  评论(0编辑  收藏  举报