翻译此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提供的分号的好方法。谢谢大家。
答案 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'"
这也可以。
答案 2 :(得分:3)
尝试引用完整命令:
test = "!sh -c 'if [ 1 -eq 1 ]; then echo TRUE; else echo FALSE; fi'"