簡體   English   中英

zsh函數在OSX上設置docker環境

[英]zsh function to set docker environment on OSX

我試圖在zsh中創建一個函數以在只有一台機器在運行的情況下為當前機器運行命令docker-machine env <machine> 我試圖讓它運行以下eval命令:

eval "$(docker-machine env default)"

要設置docker環境變量,運行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)"

因此,要正確設置環境,您需要輸入eval "$(docker-machine env default)"

我有以下功能

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM