shell 语句出错或者异常自动退出 不继续执行

 

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

解决办法如下:

使用set -e

你写的每一个脚本的开始都应该包含set -e。这告诉bash一但有任何一个语句返回非真的值,则退出bash。

使用-e的好处是避免错误滚雪球般的变成严重错误,能尽早的捕获错误。更加可读的版本:set -o errexit 

使用-e把你从检查错误中解放出来。如果你忘记了检查,bash会替你做这件事。

不过你也没有办法使用$? 来获取命令执行状态了,因为bash无法获得任何非0的返回值。

你可以使用另一种结构,使用command

使用command

if [ "$?"-ne 0]; then echo "command failed"; exit 1; fi "

可以替换成: 

command ||  echo "command failed"; exit 1; 

或者使用: 

if ! command; then echo "command failed"; exit 1; fi

时间: 2024-10-09 13:15:23

shell 语句出错或者异常自动退出 不继续执行的相关文章

用shell脚本监控linux系统 自动发送邮件

此脚本可以做一个定时的检测,超出设定的值,即往邮箱发送警告 脚本用到bc,sendmail,163邮箱, yum install bc #!/bin/bash #System Monitoring Script while [ 1 ] do #本机需开启postfix或sendmail服务. #报警邮件地址设置 [email protected] [email protected] #设置脚本运行间隔时间.单位(秒). RUNTIME=900 #内存使用率监控设置,单位 (%) MEMTHRE=

DBImport V3.7版本发布及软件稳定性(自动退出问题)解决过程分享

DBImport V3.7介绍: 1:先上图,再介绍亮点功能: 主要的升级功能为: 1:增加(Truncate Table)清表再插入功能: 清掉再插,可以保证两个库的数据一致,自己很喜欢这个功能. 2:信息栏增加红色部分: 黑色的信息太多,有时候错误信息被淹陌,分拆出来单独红色块标识错误信息,清晰一些. 3:增加保存所有的配置及配置还原: 之前只保存数据库链接的配置,为了第4点,包起了所有的配置,包括表名等. 4:增加自启动参数,用于定时功能的开机启动: 自启动参数为 - true 或 - 1

Linux Shell Bash 带有特殊含义的退出码

Linux Shell Bash 带有特殊含义的退出码 用途说明 exit命令用于退出当前shell,在shell脚本中可以终止当前脚本执行. 常用参数 格式:exit n 退出.设置退出码为n.(Cause the shell to exit with a status of n.) 格式:exit 退出.退出码不变,即为最后一个命令的退出码.(If n is omitted, the exit status is that of the  last  command executed. )

Shell脚本交互之:自动输入密码

Shell脚本交互之:自动输入密码 2016年04月09日 19:41:26 zhangjikuan 阅读数:58208 标签: Shell交互自动输入密码expect重定向管道 更多 个人分类: ARM/linux 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zhangjikuan/article/details/51105166 平时在控制台输入指令如:sudo.ssh.ftp或者修改admin权限的文件时候都会要求输入password,

Android打开飞行模式和拔出耳机时自动退出FM Radio应用

FM收音机需要插入耳机作为天线,拔出耳机时要自动退出 1.首先添加提示字符串 mediatek/packages/apps/FMRadio/res/values/strings.xml <!--TChip ZJ Add Below--> <string name="toast_plugin_headphone_before_FM">The FM will close because you have been plug out the headphone<

无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”。此操作失败的原因是对 IID 为“{000208D5 -0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来 自 HRESULT:

无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”.此操作失败的原因是对 IID 为“{000208D5 -0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错. (异常来 自 HRESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY)) 经过多般折腾,还是没什么更好的办法.

ecshop后台登录频繁自动退出问题终极解决方法集锦

ecshop后台登录后,有时候会自动退出,而且还会很频繁,有的是后台操作两下就莫名退出了,有的是恰好三分钟左右登出.这让管理员很恼火,严重影响了后台使用.对于这一问题,网络上可给的解决方法各有不同.千篇一律的复制.首先这篇文章,总结囊括了网上已有的大部分解决方案:其次,也加入了博主自带的解决方法,供各位ecshop技术参考使用,总有一个适合你的网站. 方法一:网络IP常自动切换的情况修改lib_base.php文件real_ip()函数,在real_ip函数中添加绿色部分代码: function

ecmall用户登录后自动退出解决方法

一部分用户反映登录后自动退出,经过跟踪观察,发现这些用户都是动态IP,而ecmall 中的 session 刚好是与 ip 有关的,故而找不到用户回话二失败,需重新登录. 怎么处理呢? 修改 includes/libraries/session.lib.php 方法,简单粗暴,去掉 ip 判断即可,哇卡卡 /** * 生成session验证串 * * @author wj * @param string $session_id * @return stirng */ function gen_s

docker run java官方镜像默认自动退出的问题解决办法

这几天准备在配置新版本的测试环境,因为之前的也是用docker跑tomcat,但是现在新办法直接砍掉一部分tomcat,直接用java来跑依赖包.这对我们运维来说就蛋疼了,确实是没有用docker直接跑jar包的经验,网上搜了一堆零零碎碎的资料,最后到底还是跑起来了,具体实现还需要完善,今天先写一些下来记录一下,以免再碰到此类问题. 交代一下具体背景情况: 1.jar包在普通环境上的运行脚本已经写好,jar包也已经做好,统一归档到一个目录下面几个分支目录. 2.用的是官方java的alpine-