该脚本不回显“ after”:
#!/bin/bash -e
echo "before"
echo "anything" | grep e # it would if I searched for 'y' instead
echo "after"
exit
如果我删除了-e
shebang行上的选项,也可以,但是我希望保留它,这样如果出现错误,我的脚本就会停止。我不认为grep发现没有匹配项是错误。如何防止它过分退出?
echo "anything" | { grep e || true; }
解释:
$ echo "anything" | grep e
### error
$ echo $?
1
$ echo "anything" | { grep e || true; }
### no error
$ echo $?
0
### DopeGhoti's "no-op" version
### (Potentially avoids spawning a process, if `true` is not a builtin):
$ echo "anything" | { grep e || :; }
### no error
$ echo $?
0
“ ||” 表示“或”。如果命令的第一部分“失败”(表示“ grep e”返回非零退出代码),则“ ||”之后的部分 被执行,成功并返回零作为退出代码(true
始终返回零)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句