Sim, apenas execute patch
com --dry-run
opção, ele falhará ou será bem-sucedido, o que pode ser descoberto com seu status de saída.
Mas no modo mais comum (e propenso a erros) , você provavelmente terá que executá-lo com a opção -R
, o que significa "reverso", pois somente se ele foi capaz de reverter todo o patch ser considerado como "aplicado". Caso contrário (sem '-R') poderia falhar apenas devido a algumas partes do arquivo original foi alterado. Abaixo está um exemplo simples:
if ! patch -R -p0 -s -f --dry-run <patchfile; then
patch -p0 <patchfile
fi
(Ainda mais, no snippet acima você pode até preferir silenciar patch
redirecionando completamente seu stdout e stderr para /dev/null
)