带有条件检查的git别名

时间:2016-04-23 19:39:26

标签: git bash shell sh

翻译此shell命令:

$> sh -c 'if [ 1 -eq 1 ]; then echo TRUE; else echo FALSE; fi'
TRUE

~/.gitconfig中的这个git别名:

[alias]
    test = !sh -c 'if [ 1 -eq 1 ]; then echo TRUE; else echo FALSE; fi'

结果:

$> git test
<output-omitted> Syntax error: Unterminated quoted string

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

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

3 个答案:

答案 0 :(得分:3)

似乎分号在.gitconfig中具有特殊含义。幸运的是,您可以不使用分号重写命令:

[alias]
        test = !sh -c '[ 1 -eq 2 ] && echo TRUE || echo FALSE '

答案 1 :(得分:3)

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

[alias]
    test = "!sh -c 'if [ 1 -eq 1 ]; then echo TRUE; else echo FALSE; fi'"

这也可以。

enter image description here enter image description here

答案 2 :(得分:3)

尝试引用完整命令:

test = "!sh -c 'if [ 1 -eq 1 ]; then echo TRUE; else echo FALSE; fi'"

请参阅:Git alias multi-commands with ; and &&