
このように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 $?