
Eu tenho um script que sincroniza novamente e termina assim
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
Acabei de ser solicitado a envolvê-lo em uma API, mas a API afirma isso 0=fail
e 1=success
. Como posso alterar o código de saída para refletir isso? Preciso atribuir uma variável a ele?
Responder1
exit 1
sairá com um código de erro 1 e exit 0
sairá com um código de erro 0.
Por exemplo:
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
Responder2
Resposta revisada, relatório
false
(ou(exit 1)
) etrue
conforme necessário de acordo com a API não padrão: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
Se toda essa saída de texto não for realmente necessária, o código poderá ser muito reduzido:
! rsync -azvh /dir -e ssh [email protected]:/
... tudo o que é necessário é preceder
rsync
com um NOT lógico!
e retornar o oposto do quersync
retorna.
Responder3
super fácil via bash:
test $((`echo "${PIPESTATUS[@]}" | tr ' ' '+'`)) -eq 0
echo $?