git alias con control condicional

Traduciendo este command de shell:

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

A este git alias en ~/.gitconfig :

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

Resultados en:

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

PD: No quiero asignar scripts de shell a alias de git.

PS2: como @Cyrus y @CodeWizard han mencionado, se necesita un par de comillas adicionales para proteger la definición de alias contra múltiples niveles de expansión. Buen truco para evitar los puntos y comas proporcionados por @choroba . Gracias a todos.

Otra solución es ponerlo en una cadena:

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

Esto también funcionará.

enter image description here enter image description here

Parece que los puntos y comas tienen un significado especial en .gitconfig . Afortunadamente, puede reescribir el command sin punto y coma:

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

Intenta citar un command completo:

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

Ver: Git alias multi-commands con; y &&