代码之家  ›  专栏  ›  技术社区  ›  Archimedes Trajano

如何在bash中重写命令,但使其处理现有参数?

  •  0
  • Archimedes Trajano  · 技术社区  · 4 年前

    我想推翻 docker 命令,这样当我这样做的时候 docker ps docker service ls 确切地 它将以我想要的格式呈现。

    我从这个开始

    docker() {
      if [ "$*" == 'ps' ]
      then
        command docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"
      else
        eval "command docker $*"
        # eval "command docker $@"
        # command docker $*
        # command docker $@
        # command docker "$*"
      fi
    }
    

    然而,当我这样做的时候,这行不通

    docker service ls --format="table {{.Name}}\t{{.Image}}\t{{.Replicas}}\t{{.Ports}}"
    

    但是

    command docker service ls --format="table {{.Name}}\t{{.Image}}\t{{.Replicas}}\t{{.Ports}}"
    

    这似乎是因为 " 正在处理的字符。

    0 回复  |  直到 4 年前
        1
  •  5
  •   Barmar    4 年前

    使用 "$@" 而不是 $* 以确保重新引用论点。

    docker() {
      if [ "$*" = 'ps' ]
      then
        command docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"
      else
        command docker "$@"
      fi
    }