如何防止补丁命令退出 bash shell?

How can I prevent the patch command from exiting a bash shell?

我有一个 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

它 completes/exits 在 patch 命令完成之后。我怎样才能防止、停止或忽略它。我在子 shell 中使用了 运行 命令,但没有成功。

bash -c "patch ..."

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

! patch ...

POSIX 和 bash 手册指定 set -e 不适用于已被 ! 否定的命令。

除了否定你也可以总是return0退出状态:

patch ... ||:

patch ... || true