去工具兽医。 |&grep -v vendor; true

all: gotool
    @go build -v .
clean:
    rm -f apiserver
    find . -name "[._]*.s[a-w][a-z]" | xargs -i rm -f {}
gotool:
    gofmt -w .
    go tool vet . |& grep -v vendor;true

help:
    @echo "make - compile the source code"
    @echo "make clean - remove binary file and vim swp files"
    @echo "make gotool - run go tool 'fmt' and 'vet'"
    @echo "make ca - generate ca files"

.PHONY: clean gotool help

get confused with this commend go tool vet . |& grep -v vendor;true and get error when make this...

$ make
gofmt -w .
go tool vet . |& grep -v vendor;true
/bin/sh: 1: Syntax error: "&" unexpected
Makefile:7: recipe for target 'gotool' failed
make: *** [gotool] Error 2

The command attempts to redirect both standard output and standard error to grep. The portable (and subjectively better) way to do that is

go tool vet . 2>&1 | grep -v vendor || true

The trailing true will cause the make command to succeed even if grep fails to find any matches (i.e. there are no output lines which do not contain vendor). Recall that make by default interrupts the compilation on the first error; this avoids an error for a command which is apparently only run for monitoring or possibly entertainment.