如何防止patch命令退出bash shell?
我有一个bash脚本,如下所示:如何防止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
#!/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。