fish shell传递来自命令的参数

时间:2015-03-03 18:58:20

标签: docker fish

我正在尝试使用docker machine的鱼和鱼壳中的码头客户端。我可以运行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"

1 个答案:

答案 0 :(得分:3)

您正在遇到this issue

简短的回答是bash会进一步将命令替换拆分为任何空格的单独参数,而fish只用换行符拆分它们。由于docker-machine config dev没有输出换行符,因此外部docker命令只会获得一个带有嵌入空格的巨型参数。

要模拟bash行为,可以用换行替换空格:

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

那应该做你期望的事。