linux – 为什么bash不会因为短路命令序列中的故障而停止错误?
发布时间:2020-05-23 12:37:39 所属栏目:Linux 来源:互联网
导读:当我运行带有-e选项的bash脚本时,我看到一些对我没有意义的行为,该选项有多个命令与 s串在一起,其中一个失败.我希望脚本停止在失败的命令上并返回退出状态,但它只是愉快地执行脚本的其余部分.以下是对我有意义的例子:$false true; echo $? 1 $bash -xe -c fa
|
当我运行带有-e选项的bash脚本时,我看到一些对我没有意义的行为,该选项有多个命令与&& s串在一起,其中一个失败.我希望脚本停止在失败的命令上并返回退出状态,但它只是愉快地执行脚本的其余部分. 以下是对我有意义的例子:
这是对我没有意义的那个:
这是我不明白发生了什么的地方.虚假&& true返回状态1因此脚本不应该停止执行并返回状态1,就像脚本为false时一样;真正? 在进行实验的过程中,我发现如果用括号括起命令链,它会按照我的预期方式工作:
有人能解释一下吗? 最佳答案 这里的逻辑是你使用&&已经是错误检查.同样地,bash不会将if条件中的失败视为值得中止,即使使用set -e也是如此. 当您将命令包装在括号中时,实际上是在子shell中运行这些命令,因此脚本本身只能看到该子shell的返回,即:它不知道&&参与其中,所以它会像你期望的那样中止. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – 如何在centos7上启用http2
- 是否有一个简单的命令行工具,用于在Linux上嗅探单个命令?
- ruby-on-rails – 无法在Fedora 17上安装PG gem
- 如何在linux shell脚本中将变量与变量相比减去常量?
- 如何在Linux(不是GNOME或KDE)中将shift-space重新映射到下划
- linux – 在/etc/init.d脚本中调用守护进程是阻塞的,而不是
- linux – 如何通过SSH将rsync与IPv6地址一起使用?
- 如何在linux中获取C函数的手册页,而不是使用bash命令的人?
- linux-kernel – 可以延迟导出符号的加载吗?
- 是否有可能linux文件描述符0 1 2不适用于stdin,stdout和std
