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 № 1Sie 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.