【问题标题】:Bash Script to Run over a Range of Dates运行一系列日期的 Bash 脚本
【发布时间】:2016-11-08 14:47:52
【问题描述】:

早安,

我有一个关于我正在尝试运行的特定 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

【问题讨论】:

    标签: bash date range


    【解决方案1】:

    你可能想看看这个链接:Bash: Looping through dates

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

    我同意 cpburnz... 试一试这个 sn-p(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
    

    【讨论】:

    • 同意,相应地更新了帖子。嗯,潜伏了很长时间后第一次尝试stackexchange。
    • 非常感谢大家,如果我继续遇到障碍,我会再次发布,但这个材料看起来可以帮助我克服障碍!
    猜你喜欢
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 2017-12-12
    • 2010-09-19
    • 2015-12-16
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    相关资源
    最近更新 更多