如何在Shell的一个命令变量内部正确引用另一个命令变量的值
问题原因
你写的curl请求地址的引号和转义逻辑错误,Bash 双引号包裹的内容本身就支持变量自动展开,多余的转义和额外的双引号反而会破坏URL格式,导致变量无法正常解析。
修复方法
直接删掉URL部分多余的空双引号和\"转义符即可,修改后的完整代码如下:
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"
如果想更稳妥避免变量和后续字符混淆,也可以把变量用花括号包裹:https://api.github.com/repos/${gitrepo}/releases/latest,两种写法都可以正常生效。
内容的提问来源于stack exchange,提问作者dani 'SO learn value newbies'
相关产品推荐
相关产品推荐

