我认为以下脚本只会打印'hello'然后以'1'
退出#!/bin/bash -e
! echo hello
echo world
然而,它打印
hello
world
并以0
退出以下脚本以1:
退出#!/bin/bash -e
! echo hello
以下
#!/bin/bash -e
echo hello | grep world
! echo hello
echo world
但由于某种原因,当命令返回失败的退出代码时,-e选项无法使脚本失败!中途。任何人都可以提供一个让我对此感觉更好的解释吗?
答案 0 :(得分:2)
http://www.gnu.org/software/bash/manual/bashref.html#The-Set-Builtin
对于任何返回非零代码的命令,-e命令将使脚本失败,除了某些情况,例如while循环,或者返回0但是反转的命令!选项。因此,! echo hello
将返回1(0 !
反转),但-e
选项不会失败。
但如果你制作exit status 42
,你的脚本就会失败。