иди инструмент ветеринар.| & grep -v vendor; true - PullRequest
0 голосов
/ 08 февраля 2019
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

запутаться с этой рекомендацией go tool vet . |& grep -v vendor;true и получить ошибку, когда сделаете это ...

$ 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

1 Ответ

0 голосов
/ 08 февраля 2019

Команда пытается перенаправить как стандартный вывод, так и стандартную ошибку на grep.Портативный (и субъективно лучший) способ сделать это -

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

Конечный true приведет к успешному выполнению команды make, даже если grep не найдет совпадений (т. Е. Нетвыходные строки, которые не содержат vendor).Напомним, что make по умолчанию прерывает компиляцию при первой ошибке;это позволяет избежать ошибки для команды, которая, по-видимому, запускается только для мониторинга или, возможно, для развлечения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...