Bash
如何將 git log 傳送到 curl 命令
我的目標是將
curl
命令的輸出作為curl
有效負載執行,它們分別工作,但我無法將兩者合併為一個。這是我的第一個命令,它在最後一個版本之後列印 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
有什麼方法可以在一行中輸入這 2 個命令嗎?
你可以嘗試這樣的事情:
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>
用於
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 ... )"
這將輸出一個帶有
text
密鑰的 JSON 文件。該鍵的值將是由 輸出的數據git log
,換行符替換\n
為正確的 JSON 編碼等效替換任何其他字元。
jo
可以通過大多數 Unices 上的包管理器輕鬆獲得。