2016-07-06 25 views
0

早上好,Bash脚本运行在一系列日期

我有一个关于特定的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

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

因为你提到“缺少的几次约会”,你可以收集名称/时间戳/ ECT检索完最后一个过时的文件设置为“开始日期”,然后通过以上链接上的响应实现从该日期开始的光标。我认为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 
+0

同意,更新后相应。嗯,经过很长时间的潜伏后,第一次尝试堆栈交换。 – Jeremy

+0

非常感谢大家,如果我继续碰到路障,我会再次发帖,但这种材料看起来会帮助我渡过难关! –