
У меня есть скрипт, который rsync и заканчивается вот так
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
Меня только что попросили обернуть его в API, но API утверждает, что 0=fail
и 1=success
. Как мне изменить код выхода, чтобы отразить это? Нужно ли мне назначать ему переменную?
решение1
exit 1
завершится с кодом ошибки 1 и exit 0
завершится с кодом ошибки 0.
Например:
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
решение2
Исправленный ответ, отчет
false
(или(exit 1)
), иtrue
по мере необходимости в соответствии с нестандартным API: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
Если весь этот текстовый вывод не нужен, код можно значительно сократить:
! rsync -azvh /dir -e ssh [email protected]:/
...все, что нужно, — это добавить
rsync
логическое НЕ!
и вернуть противоположное тому, чтоrsync
возвращается.
решение3
очень просто через bash:
test $((`echo "${PIPESTATUS[@]}" | tr ' ' '+'`)) -eq 0
echo $?