Bash脚本可以运行一系列日期

时间:2016-07-06 13:59:35

标签: bash date range

早上好,

我有一个关于我正在尝试运行的特定bash脚本的问题。此脚本正在下载文件,然后将其保存到另一个文件夹。脚本不会每天在cron上运行,我很好奇是否有办法写它所以如果我错过说10天,它会知道从目录下载文本文件这与我错过的每一天都相对应。我目前正在保存最后一个当前运行时的文本文件。这是我到目前为止的一个例子!

#!/bin/bash

    YMDa=$(date +%Y%m%d)
    echo "${runtime}"

    echo "${YMDa}"


    wget --username --password  http://somewebsite.com

        mv nbcufs_master_10day_tmaxs master_10day_tmaxs_${YMDa}
        mv master_10day_tmaxs_${YMDa} 'C:\Users\Wiggles\Documents\Microsoft Excel\SubDirectory1\SubDirectory2\SubDirectory3'

    echo "${YMDa}" > latest_runtime


exit 0

1 个答案:

答案 0 :(得分:-1)

您可能需要查看以下链接:Bash: Looping through dates

因为您提到“缺少几个日期”,您可以收集您检索到的最后一个日期文件的名称/时间戳/等,以设置为“开始日期”,然后通过响应实现从该日期开始的光标在上面的链接上。我认为Wintermute的回应可以帮助你找到你需要的地方。

我同意cpburnz ...给这个片段一个旋转(input_start将是你的最后一次约会)

#!/bin/bash
input_start=20160101
input_end=$(date +%Y%m%d)

startdate=$(date -d "$input_start" +%Y%m%d) || exit -1
enddate=$(date -d "$input_end" +%Y%m%d) || exit -1

d="$startdate"
while [ "$d" != "$enddate" ]; do
  directory="`pwd`/folder/$d"

  if [ -d $directory ]; then
    echo "No action for $d."
  else
    echo "Files not found for date $d"
    mkdir $directory
    # Do more actions...
  fi

  d=$(date -d "$d + 1 day" +%Y%m%d)
done