【问题标题】:How to use date variable in curl command如何在 curl 命令中使用日期变量
【发布时间】:2021-12-29 11:55:13
【问题描述】:

我一直试图简单地创建一个curl 命令,该命令在它发出的 GET 请求中使用echo $(date +'%Y-%d-%m') 的输出。我浏览了这里的帖子并尝试了许多解决方案,但似乎没有一个适合我。

这是示例请求:

curl -s -XGET 'https://www.website.com/api/shifts?start_date=2021-11-18

我尝试了以下方法但没有成功:

curl -s -XGET 'https://www.website.com/api/shifts?start_date=`echo $(date +'%Y-%d-%m')`'
curl -s -XGET 'https://www.website.com/api/shifts?start_date='$(date +'%Y-%d-%m')'
DATE=$(date +'%Y-%d-%m') ; curl -s -XGET 'https://www.website.com/api/shifts?start_date="'"$DATE"'"'

任何关于我做错了什么的意见将不胜感激。

【问题讨论】:

  • 1. echo $(date ...) 中的 echo 完全没用。 2. 单引号防止扩展。试试curl -s -XGET "https://.../shifts?start_date=$(date +'%Y-%d-%m')"

标签: bash date curl


【解决方案1】:

问题似乎是将日期格式指定为%Y-%d-%m,而字符串2021-11-18 对应于%Y-%m-%d

curl -qsSf "https://www.website.com/api/shifts?start_date=$(date +%Y-%m-%d)"

【讨论】:

    【解决方案2】:

    切入点:从 bash v4.2 开始,printf 可以格式化时间戳,所以我们甚至不需要调用date

    printf -v url 'https://www.website.com/api/shifts?start_date=%(%Y-%m-%d)T'
    curl -qsSf "$url"
    

    不提供参数意味着“当前时间”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      相关资源
      最近更新 更多