代码之家  ›  专栏  ›  技术社区  ›  doraemon

git alias to shell命令无法正确展开$@

  •  0
  • doraemon  · 技术社区  · 7 年前

    我们可以定义 git alias 要像这样运行shell命令:

    [alias]
        echo = !echo
        echo2 = !echo "$1" && echo "====" && echo "${@:2}" && :
    

    && : : 把它们变成 no-op .)

    git如何运行这些命令 它是否会产生一个壳(比如 sh

    我在两台电脑上试过上面的别名,一台 ubuntu centos . 在 乌班图 ,的 echo2 ${@:2} ,其中 bash 展开为从列表的第二个开始到最后的参数。

    我猜是这样的 已使用,但 dash . 不幸的是 短跑 我不知道 ${@:2} . 在 森托斯 猛击 而且很有效。

    我们可以有一种方法来选择运行这些别名时使用的shell吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   phd    7 年前

    /bin/sh . 看到了吗 https://stackoverflow.com/a/39445884/7976758

    无法展开参数${@:2}

    要使用参数运行别名,有两种方法:使用另一级别的shell或使用shell函数。示例:

    [alias]
        echo3 = !bash -c 'echo "$0" && echo "====" && echo "${@:1}"'
        echo4 = !"f() { echo \"$1\" && echo \"====\" && echo \"${@:2}\"; }; f"
    

    别名 echo4 f 运行 功能。