Como a maioria dos programas, o rsync retorna um status diferente de zero se ocorrer um erro. Como você tem set -e
no topo do script, seu script sairá com um status diferente de zero se o rsync for.
Se você quiser fazer alguma recuperação se o rsync falhar, você poderá continuar e analisar o status. Com set -e
, você precisa colocar o comando rsync em uma condição para que o script não saia.
failures=0
…
if rsync …; then
echo "rsync succeeded"
else
echo "rsync failed"
failures=$((failures+1))
fi
…
if ((failures != 0)); then exit 1; fi
Se você quiser analisar o código de status, um idioma comum é status=0; rsync … || status=$?
: esse comando sempre retorna um status de sucesso, pois o comando no lado direito do operador ||
sempre é bem-sucedido e status
ser definido para o status do comando rsync.
status=0
rsync … || status=$?
if ((status != 0)); then
…
fi