/ / Fischmuschel übergeben Argument von Befehl - Docker, Fisch

Fischgranate übergeben Argument vom Befehl - Hafenarbeiter, Fisch

Ich versuche Fisch mit zu benutzen Docker-Maschine mit Docker Client in Fish Shell. Ich kann rennen docker-machine config dev und es würde mir die Parameter geben, an die ich übergeben werde docker. Aber als ich das versucht habe docker (docker-machine config dev) ps es würde sagen flag provided but not defined: --tls --tlscacert

Wenn ich meine Shell auf bash umstelle, dann docker $(docker-machine config dev) ps funktioniert gut. Was ist also los mit der Syntax hier?

Ich habe versucht, nach der Antwort zu googeln. Es scheint, dass der Fehler mit Go zusammenhängt.

Docker Version 1.5.0, erstellen Sie a8a31ef

Fisch, Version 2.1.1

BEARBEITEN: Hier ist die Ausgabe von docker-machine config dev

--tls --tlscacert=/Users/me/.docker/machine/machines/dev/ca.pem --tlscert=/Users/me/.docker/machine/machines/dev/cert.pem --tlskey=/Users/me/.docker/machine/machines/dev/key.pem -H="tcp://192.168.99.102:2376"

Antworten:

3 für die Antwort № 1

Sie laufen in dieses Problem.

Die kurze Antwort ist, dass bash die Befehlssubstitutionen auf jedem Whitespace in separate Argumente aufspaltet, während Fische sie nur mit Zeilenumbrüchen teilen. Schon seit docker-machine config dev gibt keine Zeilenumbrüche aus, die äußeren docker Befehl bekommt nur ein riesiges Argument mit eingebetteten Leerzeichen.

Um das Bash-Verhalten zu simulieren, können Sie Leerzeichen durch Zeilenumbrüche ersetzen:

docker (docker-machine config dev | tr -s " " n) ps

Das sollte tun, was Sie erwarten.