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
    
  • 相关阅读:
    Path Sum II
    Convert Sorted Array to Binary Search Tree
    Construct Binary Tree from Inorder and Postorder Traversal
    Construct Binary Tree from Preorder and Inorder Traversal
    Maximum Depth of Binary Tree
    Binary Tree Zigzag Level Order Traversal
    Binary Tree Level Order Traversal
    Same Tree
    Validate Binary Search Tree
    Binary Tree Inorder Traversal
  • 原文地址:https://www.cnblogs.com/retry/p/13864812.html
Copyright © 2011-2022 走看看