翻译这个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提供的分号的好技巧。谢谢大家。
另一种解决方案是把它放在一个字符串中:
[alias]
test = "!sh -c 'if [ 1 -eq 1 ]; then echo TRUE; else echo FALSE; fi'"
Run Code Online (Sandbox Code Playgroud)
这也将起作用。