
Tengo un script que se sincroniza y termina así
rsync -azvh /dir -e ssh [email protected]:/
RESULT="$?"
# check result of rsync db's
if [ "$RESULT" != "0" ]; then
echo -e "rsync exit Code:" $RESULT "\nFAILED to rsync backups"
else
echo "SUCCESSFULL rsync of backups"
fi
Me acaban de pedir que lo incluya en una API, pero la API indica que 0=fail
y 1=success
. ¿Cómo puedo cambiar el código de salida para reflejar esto? ¿Necesito asignarle una variable?
Respuesta1
exit 1
saldrá con un código de error de 1 y exit 0
saldrá con un código de error de 0.
Por ejemplo:
rsync -azvh /dir -e ssh [email protected]:/
RESULT="$?"
# check result of rsync db's
if [ "$RESULT" != "0" ]; then
echo -e "rsync exit Code:" $RESULT "\nFAILED to rsync backups"
exit 0
else
echo "SUCCESSFULL rsync of backups"
exit 1
fi
Respuesta2
Respuesta revisada, informe
false
(o(exit 1)
)true
según sea necesario según la API no estándar:rsync -azvh /dir -e ssh [email protected]:/ RESULT="$?" # check result of rsync db's if [ "$RESULT" = "0" ]; then echo "SUCCESSFULL rsync of backups" false else echo -e "rsync exit Code:" $RESULT "\nFAILED to rsync backups" true fi
Si toda esa salida de texto no es realmente necesaria, el código podría reducirse mucho:
! rsync -azvh /dir -e ssh [email protected]:/
...todo lo que se necesita es preceder
rsync
con un NOT lógico!
y devolver lo contrario de lo quersync
devuelve.
Respuesta3
súper fácil a través de bash:
test $((`echo "${PIPESTATUS[@]}" | tr ' ' '+'`)) -eq 0
echo $?