• 【捕获异常】语句出错或者异常自动退出 不继续执行


    今天操作的时候遇到一个问题,需要把内容重定向到文件,然后再把文件重命名使用,结果重定向的时候已经抛异常了,下面的自然也会接着出现各种问题。所以,还是觉得一些关键操作要做一些判断或者捕获异常,避免出现更严重的问题。

    解决办法如下:

    使用set -e

    1. 你写的每一个脚本的开始都应该包含set -e。这告诉bash一但有任何一个语句返回非真的值,则退出bash。
    2.  
       
    3.  
      使用-e的好处是避免错误滚雪球般的变成严重错误,能尽早的捕获错误。更加可读的版本:set -o errexit
    4.  
       
    5.  
      使用-e把你从检查错误中解放出来。如果你忘记了检查,bash会替你做这件事。
    6.  
       
    7.  
      不过你也没有办法使用$? 来获取命令执行状态了,因为bash无法获得任何非0的返回值。
    8.  
       
    9.  
      你可以使用另一种结构,使用command

    使用command

    1.  
      if [ "$?"-ne 0]; then echo "command failed"; exit 1; fi "
    2.  
       
    3.  
      可以替换成:
    4.  
       
    5.  
      command || echo "command failed"; exit 1; (这种写法并不严谨,我当时的场景是执行ssh "commond",
    6.  
      所以可以返回退出码后面通过[ #? -eq 0 ]来做判断,如果是在shell中无论成功还是失败都会exit)
    7.  
       
    8.  
      修改如下(谢谢评论的朋友指正)
    9.  
       
    10.  
       
    11.  
      command || (echo "command failed"; exit 1) ;
    12.  
       
    13.  
      或者使用:
    14.  
       
    15.  
      if ! command; then echo "command failed"; exit 1; fi

    转载于:https://my.oschina.net/u/2409113/blog/490833

  • 相关阅读:
    MySQL学习笔记(六):索引
    正则表达式基础知识,持续更新…
    js改变盒子大小(上下左右)分析
    表单自定义样式
    js拖拽分析
    javascript右键菜单分析
    简要分析javascript的选项卡和轮播图
    表单联动的总结
    浅显总结ASCII Unicode UTF-8的区别
    瀑布流知识的延伸
  • 原文地址:https://www.cnblogs.com/coreLeo/p/14890880.html
Copyright © 2020-2023  润新知