zoukankan      html  css  js  c++  java
  • 三、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
    
  • 相关阅读:
    Oracle数据库测试和优化最佳实践: OTest介绍 (转)
    Oracle数据库中心双活之道:ASM vs VPLEX (转)
    awrcrt更新到2.1(重大更新)
    Oracle性能图表工具:awrcrt.sql 介绍,更新到了2.14 (2018年3月31日更新)
    java虚拟机---内存
    如何进行高效的学习
    OpenGL绘制自由落体小球
    MDA系统分析实战--图书馆管理系统
    Python爬虫实战---抓取图书馆借阅信息
    Python--urllib3库详解1
  • 原文地址:https://www.cnblogs.com/retry/p/13864812.html
Copyright © 2011-2022 走看看