You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub API的JSON POST请求中嵌入bash date命令?

解决GitHub API夜间发布嵌入日期的问题

我来帮你搞定这个需求!在bash脚本里把date命令的输出嵌入到GitHub API的JSON POST请求中,核心是要让shell正确解析命令替换,同时保证JSON格式合法。下面给你几种实用的方法:

方法1:直接在双引号JSON中嵌入命令替换

bash中双引号包裹的字符串会解析内部的命令替换($()),所以你可以直接把$(date +%d-%m-%Y)写在JSON里,注意要转义JSON本身的双引号(用\"),避免和外层的双引号冲突:

curl -X POST \
  -H "Authorization: token YOUR_GITHUB_TOKEN" \
  -H "Content-Type: application/json" \
  https://api.github.com/repos/OWNER/REPO/releases \
  -d "{
    \"tag_name\": \"nightly-$(date +%d-%m-%Y)\",
    \"name\": \"Nightly Build $(date +%d-%m-%Y)\",
    \"body\": \"Automated nightly release for $(date +%d-%m-%Y)\",
    \"draft\": false,
    \"prerelease\": true
  }"

方法2:用变量存储日期后再代入

先把日期存到一个变量里,再在JSON中引用变量,这样代码更清晰,也减少重复执行date命令的开销:

# 先获取日期并存入变量
RELEASE_DATE=$(date +%d-%m-%Y)

# 发送POST请求
curl -X POST \
  -H "Authorization: token YOUR_GITHUB_TOKEN" \
  -H "Content-Type: application/json" \
  https://api.github.com/repos/OWNER/REPO/releases \
  -d "{
    \"tag_name\": \"nightly-$RELEASE_DATE\",
    \"name\": \"Nightly Build $RELEASE_DATE\",
    \"body\": \"Automated nightly release for $RELEASE_DATE\",
    \"draft\": false,
    \"prerelease\": true
  }"

方法3:用jq生成JSON(推荐)

如果JSON结构比较复杂,手动转义双引号容易出错,推荐用jq工具来生成合法的JSON。它会自动处理引号转义,还能方便地传递变量:

RELEASE_DATE=$(date +%d-%m-%Y)

curl -X POST \
  -H "Authorization: token YOUR_GITHUB_TOKEN" \
  -H "Content-Type: application/json" \
  https://api.github.com/repos/OWNER/REPO/releases \
  -d "$(jq -n --arg date "$RELEASE_DATE" '{
    tag_name: "nightly-\($date)",
    name: "Nightly Build \($date)",
    body: "Automated nightly release for \($date)",
    draft: false,
    prerelease: true
  }')"

注意事项

  • 记得替换命令中的YOUR_GITHUB_TOKEN(需要有私有仓库的repo权限)、OWNER(仓库所有者用户名/组织名)、REPO(仓库名称)。
  • 如果你的夜间发布需要更多自定义参数(比如上传资产),可以根据GitHub API的规则扩展JSON内容。

内容的提问来源于stack exchange,提问作者user3577138

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:25:16