Una breve introduzione al caso d'uso:
Sto usando un dockercontenitore per eseguire i miei gotest usando go test ./.... Questo può essere ottenuto facilmente usando docker exec <container> /bin/sh -c "go test ./...". Sfortunatamente si go test ./...estende su tutte le sottodirectory e vorrei escluderne una (la directory del fornitore).
La soluzione consigliata per questo sta usando il seguente comando go test $(go list ./... | grep -v '<excluded>':, in qualche modo questo mi lascia con il seguente risultato:
docker run golang:1.6.2-alpine /bin/sh -c "go test " (Ho provato questo sia su run che su exec, ma probabilmente usano lo stesso core).
Quando utilizzo il contenitore usando docker exec -it <container_id> /bin/shed eseguo esattamente lo stesso comando, funziona come un incantesimo.
Sembra che l'esecuzione dei comandi shell tramite la finestra mobile exec / run non supporti alcun comando nidificato con $()?
vendorper esempio.
$(...)stato espanso dalla tua shell tra virgolette doppie prima che fosse eseguito all'interno del contenitore docker. Pertanto, il problema potrebbe derivare dal contenuto della directory corrente. Ha docker exec container /bin/sh -c 'go test $(go list ./... | grep -v "<excluded>")'funzionato?
$(go list ./... | grep -v '<excluded>', che cos'è<excluded>?