這里的例子:
gitrepo=$(jq -r '.gitrepo' 0.json)
releasetag=$(curl --silent ""https://api.github.com/repos/\"$gitrepo\""/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"] )".*/\1/')
echo "$releasetag"
用于\"轉義字符。
0.json:
{
"type": "github-releases",
"gitrepo": "ipfs/go-ipfs"
}
如何讓 $gitrepo 在 $releasetag 中作業?提前致謝!
uj5u.com熱心網友回復:
Bash 變數在帶引號的"字串內展開。
gitrepo="$(jq -r '.gitrepo' 0.json)"
releasetag="$(
curl --silent "https://api.github.com/repos/$gitrepo/releases/latest" \
| grep '"tag_name":' | sed -E 's/.*"([^"] )".*/\1/'
)"
echo "$releasetag"
順便說一句,當您jq用來提取.gitrepofrom 時0.json,您也可以以完全相同的方式使用它來提取.tag_namefromcurl的輸出(而不是使用grepand sed),如下所示:
gitrepo="$(jq -r '.gitrepo' 0.json)"
releasetag="$(
curl --silent "https://api.github.com/repos/$gitrepo/releases/latest" \
| jq -r '.tag_name'
)"
echo "$releasetag"
為了進一步簡化它(取決于您的用例),只需撰寫:
curl --silent "https://api.github.com/repos/$(jq -r '.gitrepo' 0.json)/releases/latest" \
| jq -r '.tag_name'
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/335637.html
