Bash 스크립트에서 종료 코드를 0에서 1로 변경

Bash 스크립트에서 종료 코드를 0에서 1로 변경

이렇게 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=fail1=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논리적 NOT을 사용 ! 하고 반환되는 것과 반대되는 것을 반환하는 것입니다 rsync.

답변3

Bash를 통해 매우 쉽습니다.

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

관련 정보