bash忽略错误继续执行_shell 执行命令失败则中断执行 类似断言
编写shell脚本时,如果需要在某个命令执行失败则终止执行,可以使用|| 和 && 运算符结合
正常执行
cd ~ || exit
终止执行
cd ~xxxx || exit
echo 'success'
但是想在终止时输出一些错误信息,怎么写?
第一种
cd dir || echo '出错啦' && exit
❌ 错误
shell 中运算符没有优先级,从左向右执行
当 cd dir 执行成功时,会执行 exit,cd dir 返回0,不会执行 || echo '出错啦',但是会执行 && exit
当 cd dir 执行失败时,会执行 echo '出错啦' 和 exit
所以都会终止执行
第二种
cd dir || (echo '出错啦' && exit)
❌ 错误
当 cd dir 执行成功时,继续执行
当 cd dir 执行失败时,会执行 echo '出错啦' 然后继续往下执行
原因:加了括号,命令执行结果是括号内的命令执行结果(是否出错),括号内的exit不会影响后续命令的执行
正确的代码
很简单
cd dir || ! echo '执行出错啦' || exit
这是正解
当 cd dir 返回非0,会执行 ! echo '执行出错啦'
为什么要加 !,因为 echo '' 会返回0,加了 ! 会让 || 误认为前边命令执行失败了,所以会执行 exit
短路与 &&:前者为真,才执行后边;前边为假,都不执行
短路或 ||:前者为真,后者不执行;前者为假,后者执行
还有另外一种写法
cd dir
c=
c -ne 0 ]; then
echo '执行出错啦'
exit 1
fi
好像有点复杂
bash忽略错误继续执行_shell 执行命令失败则中断执行 类似断言相关推荐
- 执行远程linux命令,linux shell 远程执行命令
经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...
- (shell脚本编程)linux如何利用脚本执行多条命令以及linux如何执行定时任务
文章目录 shell脚本编程 条件语句 脚本执行多条命令 执行定时任务 本文着重于提高我们的生产力,所以将这几个作为了一个专题. shell脚本编程 脚本中不同语句用分号隔开,和c语言一样. for, ...
- shell脚本循环执行一个linux命令,Linux中循环执行shell命令的方法
Linux命令行,循环执行shell命令 死循环 命令格式while true ;do ; done; 可以将 command 替换为任意命令. 下面以echo "hello"; ...
- 执行docker一系列命令失败
出现这种情况之后,执行下面的命令即可. systemctl restart docker
- linux一次执行多个命令,linux 一次执行多条命令
1.mkdir myfile ; chmod -R 777 myfile [root@iZ9488z4qfcZ myfile]# mkdir www ; chmod -R 777 www [root@ ...
- 曙光服务器ipmtool查看服务器信息,执行ipmitool fru命令失败
经过定位发现函数的调用栈如下 main --> ipmi_main --> ipmi_cmd_run --> ipmi_fru_main --> ipmi_fru_print_ ...
- Bash中命令连接符的用法——一次执行多个命令-转
多个命令可以放在一行上,其执行情况得依赖于用在命令之间的分隔符. 如果每个命令被一个分号 (;) 所分隔,那么命令会连续的执行下去,如: 引用 beyes@linux-beyes:/proc> ...
- Bash中命令连接符的用法——一次执行多个命令
多个命令可以放在一行上,其执行情况得依赖于用在命令之间的分隔符. 如果每个命令被一个分号 (;) 所分隔,那么命令会连续的执行下去,如: 引用 beyes@linux-beyes:/proc> ...
- Linux 命令行上执行多个命令(分隔符简介使用)
Linux 系统可以在一个命令行上执行多个命令,相应的命令行的分隔符简介及使用如下: ; 如果命令被分号(;)所分隔,那么命令会连续的执行下去,就算是错误的命令也会继续执行后面的命令.示例如下: ls ...
最新文章
- windows下mysql开启慢查询
- 【原创】POSTGRESQL 分区表初次体验
- hive shell/sql 命令行
- java的流套接_java-使用流关闭套接字
- html的下拉刷新页面,html下拉刷新上拉加载Refresher3.0
- Media Player Classic - HC 源代码分析 5:关于对话框 (CAboutDlg)
- trycatch 不能捕获运行时异常_软件运行异常时的多种排查思路与方法
- split,splice,slice,substr,substring使用方法总结
- 父与子编程之旅第十章pygame下载+安装+pip更新
- 网页扫雷(简易版)(一)
- 超星高级语言程序设计实验作业 (实验02 分支与循环程序设计)(三)
- acp计算机编程大赛时间,2021年ACP考试时间安排 - 希赛网
- STM32F107VCTx HAL库 USART通信 DMA通信 友善串口调试助手 PL2303驱动安装
- 基于ROS的语音控制机器人(一):基本功能的实现
- 记一次海康威视笔试题小练手
- 从业20年的“老司机”跟你聊聊:超融合技术哪家强?!
- 分布式系统可用性和可靠性的区别,可用性如何计算,以及如何做到高可用和高可靠
- cocos-creator学习笔记1(旋转,位置移动,键盘监控移动基础)
- LeetCode题解:x的平方根
- 基于Python 3.11.0版本模拟登录并爬取西安理工大学正方教务系统的学分绩点并计算