我的目标是使用curl
命令的输出作为curl
有效负载来执行 a,它们分别工作,但我无法将两者合并为一个。
这是我的第一个命令,它打印上一个版本之后 GIT 存储库中的更改
git log --pretty=oneline HEAD...$(git tag -l | tail -n2 | head -n1)
好的,现在我想以某种方式将此输出引入到这个curl 句子中
curl -vX POST --data-urlencode 'payload={"text": "< GIT LOG OUTPUT >"}' https://example.com
有什么办法可以在一行中传输这两个命令吗?
答案1
你可以尝试这样的事情:
curl -vX POST --data-urlencode \
"payload={\"text\":\"`git log --pretty=oneline HEAD...$(git tag -l | tail -n2 | head -n1) | tr '\n' ',' | sed 's|,$||'`\"}" \
https://<your-remote>
答案2
用于jo
创建正确编码的 JSON:
curl -vX POST --data-urlencode \
payload="$(
jo text="$(
git log --pretty=oneline HEAD...$(git tag -l | tail -n2 | head -n1)
)"
)"
这里最主要的是命令
jo text="$( git log ... )"
这将输出带有密钥的 JSON 文档text
。该键的值将是 输出的数据git log
,换行符替换为\n
,任何其他字符替换为正确的 JSON 编码等效项。
jo
可以通过大多数 Unices 上的包管理器轻松获得。