我有个关于临时Git配置的问题。
我需要把标签名传递到标签的帖子上,或者任何承诺。
#!/bin/bash
while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
curl -X POST "https://en4c6i2k7daz5.x.pipedream.net/" \
-H 'Content-Type: application/json' \
-d '{"version": "$refname"}'
done在我得到的结果中(请参阅https://requestbin.com/r/en4c6i2k7daz5/1cxY1mJeMlejAnF0OJ8B8iCd6sl)
{"version": "$refname"}因此,由于某种原因,它没有发送标记名($refname的值)--脚本中有什么问题?
发布于 2020-06-06 19:47:33
您在单引号数据,单引号存在,以关闭shell的字符串构造语法,扩展和分词和其他。由于参考名中不能包含空白或glob语法,所以我认为您可以不用引用它们的扩展,但为了安全起见,为了控制扩展,我通常会从单引号转换为双引号,以便得到这样的结果:
-d '{"version": "'"$refname"'"}'或者,你可以做所有的双引号,避开json多余的双引号,用这种方式来支撑它们:
-d "{\"version\": \"$refname\"}"编辑:嗯,我从git help check-ref-format得到
这些规则使基于shell脚本的工具很容易解析引用名称,在引用名称未引用时(错误地)由shell扩展路径名,还可以避免某些引用名称表达式中的歧义(参见gitrevisions(7)):
也就是说,您保证根本不必引用refname展开。
https://stackoverflow.com/questions/62236955
复制相似问题