【发布时间】:2021-12-30 04:35:35
【问题描述】:
我正在尝试在 .gitconfig 中添加一个别名,如果没有命令行参数,它应该解析为默认值。
lgs = "!f() { git log --stat $1; }; f"
git lgs 应该打印最后一次提交的统计日志。
git lgs -2 - 应该打印最后 2 次提交的统计日志。 (这个正在工作)。
我尝试了几个选项,但没有结果
lgs = "!f() { git log --stat $1:=-1; }; f"lgs = "!f() { git log --stat $1:-1; }; f"lgs = "!f() { git log --stat $1=-1; }; f"
如何正确实现?
【问题讨论】:
-
这可能取决于你的shell。假设 bash 将给
lgs = "!f() { git log --stat ${1:=-1}; }; f"作为通常的 bash 默认值 -
f() { git log --stat ${1:=-1}; }; f: 1: f() { git log --stat ${1:=-1}; }; f: 1: 错误的变量名
-
@Vogel612:Git 别名由 POSIX 样式的 shell (
sh) 运行,并且 sh 具有相同类型的默认值,但您只需扩展:${1:--1}in在这种情况下,如果你想让一个空但设置的$1扩展为-1,或者如果你想让设置但为空的$1扩展为空字符串,则${1--1}。 -
是的,它奏效了。请把它作为答案。
lgs = "!f() { git log --stat ${1:--1}; }; f" -
@torek 因为您似乎明确知道(并且 OP 确认它有效),您可能希望将其作为答案发布:)