Изменить код выхода с 0 на 1 в скрипте bash

Изменить код выхода с 0 на 1 в скрипте bash

У меня есть скрипт, который 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

  1. Исправленный ответ, отчет 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
    
  2. Если весь этот текстовый вывод не нужен, код можно значительно сократить:

    ! rsync -azvh /dir -e ssh [email protected]:/
    

    ...все, что нужно, — это добавить rsyncлогическое НЕ ! и вернуть противоположное тому, что rsyncвозвращается.

решение3

очень просто через bash:

test $((`echo "${PIPESTATUS[@]}" | tr ' ' '+'`)) -eq 0
echo $?

Связанный контент