fish shell 从命令传递参数
fish shell pass argument from command
我正在尝试将 fish 与 docker machine 和 docker 客户端一起用于 fish shell。我可以 运行 docker-machine config dev
并且它会给我传递给 docker
的参数。但是当我尝试这样做时 docker (docker-machine config dev) ps
它会说 flag provided but not defined: --tls --tlscacert
如果我将 shell 切换为 bash,则 docker $(docker-machine config dev) ps
可以正常工作。那么这里的语法有什么问题?
我尝试用谷歌搜索答案,好像这个错误与 Go 有关,也许吧?
Docker 版本 1.5.0,构建 a8a31ef
fish,版本 2.1.1
编辑: 这是 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"
您 运行 进入 。
简短的回答是 bash 将进一步将命令替换拆分为任何空格上的单独参数,而 fish 仅使用换行符将它们拆分。由于 docker-machine config dev
不输出换行符,所以外部 docker
命令只有一个巨大的参数,内嵌空格。
要模拟 bash 行为,您可以用换行符替换空格:
docker (docker-machine config dev | tr -s ' ' \n) ps
这应该符合您的预期。
我正在尝试将 fish 与 docker machine 和 docker 客户端一起用于 fish shell。我可以 运行 docker-machine config dev
并且它会给我传递给 docker
的参数。但是当我尝试这样做时 docker (docker-machine config dev) ps
它会说 flag provided but not defined: --tls --tlscacert
如果我将 shell 切换为 bash,则 docker $(docker-machine config dev) ps
可以正常工作。那么这里的语法有什么问题?
我尝试用谷歌搜索答案,好像这个错误与 Go 有关,也许吧?
Docker 版本 1.5.0,构建 a8a31ef
fish,版本 2.1.1
编辑: 这是 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"
您 运行 进入
简短的回答是 bash 将进一步将命令替换拆分为任何空格上的单独参数,而 fish 仅使用换行符将它们拆分。由于 docker-machine config dev
不输出换行符,所以外部 docker
命令只有一个巨大的参数,内嵌空格。
要模拟 bash 行为,您可以用换行符替换空格:
docker (docker-machine config dev | tr -s ' ' \n) ps
这应该符合您的预期。