我正在使用Git Bash v1.8.1,带有一些别名(用于测试):
[alias]
ekko = !echo $1 && echo $1
ekko2 = !sh -c 'echo $1 && echo $1'
Run Code Online (Sandbox Code Playgroud)
但是当我运行它们时,我看到:
> git ekko master
master
master master
Run Code Online (Sandbox Code Playgroud)
和:
> git ekko2 master
(blank line)
(blank line)
Run Code Online (Sandbox Code Playgroud)
我的预期行为是:
> git ekko master
master
master
Run Code Online (Sandbox Code Playgroud)
我对别名相当新 - 我正在寻找一种方法来确保我的参数被完全消耗,而不是附加到别名的末尾.一些调查表明这种行为在Git v1.7.x附近发生了变化,我还没有确定如何完成这个:
Aje*_*i32 15
你的ekko2别名非常接近......你真正想要的是这个:
[alias]
ekko2 = !sh -c 'echo $1 && echo $1' -
Run Code Online (Sandbox Code Playgroud)
执行shell命令的Git别名会替换$n变量,但它们还会将您传递给它们的任何参数附加到命令的末尾.所以在你的第一个例子git ekko master中相当于echo master && echo master master,它解释了它的输出.
你的第二个例子更接近,但是你将"master"传递给sh命令,这只是忽略了额外的参数.通过添加-到别名的末尾,您将告知后面sh的参数是针对脚本sh执行的,而不是为sh自己执行.
小智 5
ekko2 最后缺少一个短划线:
[alias]
ekko2 = !sh -c 'echo $1 && echo $1' -
Run Code Online (Sandbox Code Playgroud)
[alias]
example = !sh -c 'ls $2 $1' -
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
661 次 |
| 最近记录: |