带条件检查的 git 别名

Eug*_*sca 3 git bash shell sh

翻译这个shell命令:

$> sh -c 'if [ 1 -eq 1 ]; then echo TRUE; else echo FALSE; fi'
TRUE
Run Code Online (Sandbox Code Playgroud)

到这个 git 别名~/.gitconfig

[alias]
    test = !sh -c 'if [ 1 -eq 1 ]; then echo TRUE; else echo FALSE; fi'
Run Code Online (Sandbox Code Playgroud)

结果是:

$> git test
<output-omitted> Syntax error: Unterminated quoted string
Run Code Online (Sandbox Code Playgroud)

PS:不想将 shell 脚本映射到 git 别名。

PS2:正如@Cyrus@CodeWizard所提到的,需要一对额外的引号来保护别名定义免受多级扩展。避免使用@choroba提供的分号的好技巧。谢谢大家。

Cod*_*ard 5

另一种解决方案是把它放在一个字符串中:

[alias]
    test = "!sh -c 'if [ 1 -eq 1 ]; then echo TRUE; else echo FALSE; fi'"
Run Code Online (Sandbox Code Playgroud)

这也将起作用。

在此处输入图片说明 在此处输入图片说明