シェルスクリプトのelse部分でエラーが発生するのはなぜですか? [コピー]

シェルスクリプトのelse部分でエラーが発生するのはなぜですか? [コピー]

以下のスクリプトを試しています。 date1のfilesdirフォルダに2つのファイルを受け取りたいです。日付が1の場合、両方のファイルが受信されたことを確認する必要があるため、繰り返しループを確認するたびにカウンタ「カウント」を増やそうとします。日付が1でファイルが受信されない場合は、数秒待ってからもう一度確認する必要があります(ファイルは確実に受信されるため)。日付が1でない場合は、ファイルを削除してwhileループを終了する必要があります。私は以下を試しています。

day_of_month=$(date +%d)
export filesdir=/dir1/dir2/dir3
local count=0
numFilesReceived=0
while true; do
    files=$(find $filesdir -name '*.txt.gz' -type f -mmin -1)
    if [ "$day_of_month" == "1" ]; then
        if [ -f "$files" ]; then
            count=$((count + 1))
            break
            if [ "$numFilesReceived" == "$count" ]; then
                echo "All $count data received!"
                break 3
            fi
        fi
        else
            echo "No data received yet!" 
        fi
        fi
         else
        rm $files
    fi
     done

私は本当に欲しいものを手に入れませんでした。代わりに、if else 部分でエラーが発生します。

ベストアンサー1

sの数はsの数fiと同じでなければなりません。if現在が多すぎますfi

is、notを含む単一式ifの構造です。elseif... then... else... fiif... then... fi... else... fi

おすすめ記事