zsh函数在OSX上设置docker环境

我试图在zsh中创build一个函数来运行当前机器的命令docker-machine env <machine> ,如果只有一台机器运行的话。 我试图让它运行以下eval命令:

eval "$(docker-machine env default)"

要设置docker环境variables,运行docker-machine env default将输出以下内容:

 export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.100:2376" export DOCKER_CERT_PATH="/Users/chris/.docker/machine/machines/default" export DOCKER_MACHINE_NAME="default" # Run this command to configure your shell: # eval "$(docker-machine env default)" 

因此,要正确设置环境,您需要inputeval "$(docker-machine env default)"

我有以下function

 dmset() { COUNT=`docker-machine ls | grep "Running" | wc -l` if [[ "${COUNT// /}" == "1" ]] then RUNNING_MACHINE=`docker-machine ls | grep "Running" | awk '{print $1;}'` COMMAND="\"\$(docker-machine env $RUNNING_MACHINE)\"" eval $COMMAND echo Setting docker environment for $RUNNING_MACHINE else echo "Unable to set Docker environment" fi } 

但是这不起作用。 我收到以下错误信息:

 (eval):1: no such file or directory: export DOCKER_TLS_VERIFY="1"\nexport DOCKER_HOST="tcp://192.168.99.100:2376"\nexport DOCKER_CERT_PATH="/Users/chris/.docker/machine/machines/default"\nexport DOCKER_MACHINE_NAME="default"\n# Run this command to configure your shell: \n# eval "$(docker-machine env default)" 

我如何运行eval命令来通过单个脚本设置环境?

在@Etan Reisner的评论之后,我将其改为:

 dmset() { COUNT=`docker-machine ls | grep "Running" | wc -l` if [[ "${COUNT// /}" == "1" ]] then RUNNING_MACHINE=`docker-machine ls | grep "Running" | awk '{print $1;}'` while IFS= read -r line do if [[ $line == 'export'* ]] then eval $line fi done < <(docker-machine env $RUNNING_MACHINE) echo "Docker environment set for $RUNNING_MACHINE" else echo "Unable to set Docker environment" fi }