私はフォルダの内容を圧縮し、そのファイルをバックアップサーバーに移動する簡単なバックアップスクリプトを作成しています。スクリプトは、移動する前にtarファイルが存在し、ゼロバイトでないことを確認します。
問題は、スクリプトがIF行の1つで終了することです。
if [ -f /www/archives/pdf/pdf_201207021048.tar && 11294720 -gt 0 ]; then
echo "tar file exists and is greater than 0 bytes."
else
echo "tar file does not exist or is zero bytes"
fi
コンソールのエラーは次のとおりです。
./backup_pdf.sh: line 49: [: missing `]'
49行は上記のif文です。
スクリプトが正常に確認されました。
sh -n backup.sh
sh
「]」がありませんが、構文チェックに合格しました。何が起こっていますか?
答え1
問題は&&
有効な演算子ではないことです[
。-a
またはに変更する必要があります[ condition ] && [ other_condition ]
。
&&
は仕切り(例;
:、、、||
および&
)\n
posixシェル。ドア[ -f www/archives/pdf/pdf_201207021048.tar
は1つあるので終了し、&&
それに似た別のドア(到達するとエラーが発生します)があり、11294720 -gt 0 ]
ドアはで終了します;
。