이렇게 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
논리적 NOT을 추가!
하고 반환 값의 반대를 반환하는 것 입니다rsync
.
답변3
Bash를 통해 매우 쉽게:
test $((`echo "${PIPESTATUS[@]}" | tr ' ' '+'`)) -eq 0
echo $?