
我有一個 rsyncs 並像這樣結束的腳本
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 $?