シェル バックアップ スクリプト、`]` がありません

シェル バックアップ スクリプト、`]` がありません

フォルダーの内容を tar し、そのファイルをバックアップ サーバーに移動する簡単なバックアップ スクリプトを作成しています。スクリプトは、移動する前に tar ファイルが存在し、0 バイトではないことを確認します。

問題は、スクリプトが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。 文は があるために終了し&&、次に のように見える別の文 (これに到達するとエラーが発生します) があり11294720 -gt 0 ]、その文は で終了します;

関連情報