用wget使用基于变量的格式化日期的Unix系统。

问题描述 投票:0回答:1

我有一个脚本,我用cron安排在工作日。 该脚本使用wget在每个工作日下载一个文件。 url是基于日期的动态的。 我创建了以下脚本。

day_or_weekend=`date +%w`
if [$day_or_weekend == 1] ; then
    look_back=3
else
    look_back=1
fi

wget -O file_name_`date +%Y%m%d`.csv https://website/filename/date/`date $look_back days ago + %Y-%m-%d`/type/csv

这个脚本生成的文件名称是正确的,但内容是空的。 我对写bash shell脚本很陌生,所以不知道如何调试这个脚本。 所以我的问题是。

  1. 我是否定义了 look_back 变量正确吗?
  2. 我是否正确地将日期参数添加到wget url中?
shell ubuntu unix wget date-formatting
1个回答
1
投票

这应该可以解决你的空白问题。命令行是非常讲究间距和引号的。

wget -O "file_name_$(date +%Y%m%d).csv" \
  "https://website/filename/date/$(date -d "$look_back days ago" +%Y-%m-%d)/type/csv"

只要你使用busybox或GNU date(BSD date必须从epoch表示法中减去以秒为单位的时间,基本的Posix date实际上无法做到这一点),你确定前一个工作日的逻辑就会按照设计的方式运行。

© www.soinside.com 2019 - 2024. All rights reserved.