为什么我的 shell 脚本的 else 部分出现错误?

为什么我的 shell 脚本的 else 部分出现错误?

我正在尝试下面的脚本,我希望在 date1 的 filesdir 文件夹中收到两个文件。如果日期为 1,那么它应该检查是否收到两个文件,这就是为什么我尝试在每次迭代和检查循环时增加计数器“计数”。如果日期为 1 并且未收到文件,则应等待几秒钟并再次检查(因为肯定会收到文件)。如果 date 不为 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的数量fi应等于ifs 的数量。目前您的 s 太多fi

带有is 、 not 的单个if表达式的结构。elseif... then... else... fiif... then... fi... else... fi

相关内容