早上好,
我有一个关于我正在尝试运行的特定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
答案 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