linux – bash set -e函数,带双管道
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – bash set -e函数,带双管道,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1891字,纯文字阅读大概需要3分钟。
内容图文
![linux – bash set -e函数,带双管道](/upload/InfoBanner/zyjiaocheng/954/3b6538c592a24f2bb191f04bbd18366a.jpg)
有人可以解释这种行为吗?这对我来说似乎很奇怪.
#!/bin/bash
set -e
_func() {
cat non-existant-file
return 0
}
_func || echo "Not seen since _func returned zero"
_func
echo "Not seen since _func returned non-zero"
输出(GNU bash,版本4.3.42(1)-release(x86_64-pc-linux-gnu)):
$bash func.sh
cat: non-existant-file: No such file or directory
cat: non-existant-file: No such file or directory
$
解决方法:
如果您查看bash的联机帮助页,它会特别提到:
特别是如果失败的命令是在&& ;;中执行的任何命令的一部分,则shell不会退出.或||列表除了最后一个&&之后的命令或|| […]
此行为与文档/预期完全一致.
如果你运行这样的东西,你可以自己看到这个:
#!/bin/bash
set -ex
# set -x will tell you exactly where the shell exits.
_func() {
cat non-existant-file
return 0
}
#_func || echo "Not seen since _func returned zero"
cat non-existant-file || _func
_func
echo "Not seen since _func returned non-zero"
从联机帮助页:
set -e Exit immediately if a pipeline (which may consist of a
single simple command), a list, or a compound command
(see SHELL GRAMMAR above), exits with a non-zero sta‐
tus. The shell does not exit if the command that fails
is part of the command list immediately following a
while or until keyword, part of the test following the
if or elif reserved words, part of any command executed
in a && or || list except the command following the
final && or ||, any command in a pipeline but the last,
or if the command's return value is being inverted with
!. If a compound command other than a subshell returns
a non-zero status because a command failed while -e was
being ignored, the shell does not exit. A trap on ERR,
if set, is executed before the shell exits. This option
applies to the shell environment and each subshell envi‐
ronment separately (see COMMAND EXECUTION ENVIRONMENT
above), and may cause subshells to exit before executing
all the commands in the subshell.
这就是你的情况.
内容总结
以上是互联网集市为您收集整理的linux – bash set -e函数,带双管道全部内容,希望文章能够帮你解决linux – bash set -e函数,带双管道所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。