如何在bash中重写命令,但使其处理现有参数?
我希望覆盖docker命令,以便在执行docker ps或docker service ls时,它将以我想要的格式呈现 我是从这个开始的如何在bash中重写命令,但使其处理现有参数?,bash,Bash,我希望覆盖docker命令,以便在执行docker ps或docker service ls时,它将以我想要的格式呈现 我是从这个开始的 docker() { if [ "$*" == 'ps' ] then command docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}" else eval "command docker $*"
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}}"
但是
这似乎是因为正在处理的字符。使用$@而不是$*来确保参数被重新引用
docker() {
if [ "$*" = 'ps' ]
then
command docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"
else
command docker "$@"
fi
}
使用$@而不是$*以确保参数被重新引用
docker() {
if [ "$*" = 'ps' ]
then
command docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"
else
command docker "$@"
fi
}