如何防止patch命令退出bash shell?

如何防止patch命令退出bash shell?,bash,patch,Bash,Patch,我有一个bash脚本,如下所示: #!/bin/bash set -e function patchStuff { patch --unified --input=<...>.patch --strip=0 --forward --reject-file=<...>.patch.rej --verbose --dry-run } function doMoreThings {} patchStuff doMoreThings # never reached

我有一个bash脚本,如下所示:

#!/bin/bash

set -e

function patchStuff {
  patch --unified --input=<...>.patch --strip=0 --forward --reject-file=<...>.patch.rej --verbose --dry-run
}

function doMoreThings {}

patchStuff
doMoreThings # never reached

exit 0
#/bin/bash
set-e
功能补丁{
patch--unified--input=.patch--strip=0--forward--reject file=.patch.rej--verbose--dry run
}
函数域{}
补丁
多莫雷西从未到达
出口0
它在
补丁
命令完成后立即完成/退出。我该如何预防、阻止或忽视这一点。我玩了在子shell中运行命令的游戏,但那没有起作用

bash-c“补丁…”


如果您不希望某个特定命令触发
set-e
指定的退出,则可以取消该命令

! patch ...

POSIX和
bash
手册规定
set-e
不适用于被
否定的命令

如果您不希望某个特定命令触发
set-e
指定的退出,则可以取消该命令

! patch ...

POSIX和
bash
手册规定
set-e
不适用于被
否定的命令

您也可以始终返回0退出状态,而不是否定:

patch ... ||:


除了否定,您还可以始终返回0退出状态:

patch ... ||:


patch
必须报告错误,而
set-e
意味着您希望在任何命令出现错误时退出脚本。如果您不想使用该选项,请不要使用它。不要使用
set-e
;进行自己的错误检查,并在您认为合适时退出。当然,我的想法并没有这样做,因为输出没有显示任何错误,最后记录的行是
done
。一定有什么东西在将内容记录到stderr中。
patch
必须报告错误,
set-e
表示您希望在任何命令出现错误时退出脚本。如果您不想使用该选项,请不要使用它。不要使用
set-e
;进行自己的错误检查,并在您认为合适时退出。当然,我的想法并没有这样做,因为输出没有显示任何错误,最后记录的行是
done
。一定是什么东西把东西记录到了stderr。