You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Bash变量$repo_url加入git log输出的格式化JSON中

Bash变量插入git log pretty format JSON输出解决方案

问题原因

Bash中单引号属于强引用符号,包裹在单引号内的所有字符都会保留字面含义,因此你写在格式字符串单引号内的$repo_url不会被解析为变量,只会原样输出字符串。

解决方法

将需要变量展开的位置从单引号中剥离,用双引号包裹变量保证正常解析,再和其余静态格式字符串拼接即可,修改后的可运行代码如下:

git log -n 1 \
--pretty=format:'{"repo": "'"$repo_url"'", "commit": "%H", "author": "%aN <%aE>", "date": "%ai", "message": """%B""", "notes": """%N""" },' \
$@  | awk 'BEGIN { print("[") } { print($0) } END { print("]") }' | python -u -c \
'import ast,json,sys; print(json.dumps(ast.literal_eval(sys.stdin.read())))'

补充注意事项

如果你的repo_url可能包含双引号、反斜杠等JSON特殊字符,建议先对变量做转义处理再插入,避免生成非法JSON格式:

# 提前转义特殊字符
repo_url_escaped=$(printf '%s' "$repo_url" | sed 's/[\\"]/\\&/g')

之后将上面代码中的$repo_url替换为$repo_url_escaped即可。

内容的提问来源于stack exchange,提问作者Yashika Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 21:48:02