在 docker-machine 中评估:终端与 shell 脚本
Eval in docker-machine: terminal vs shell script
我正在尝试 运行 一个简单的 shell 脚本来自动更改 docker 机器环境。问题是这样的,当我直接在Mac终端运行下面的命令输出如下:
eval $(docker-machine env default)
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * digitalocean Running tcp://***.**.***.***:**** v1.12.0
所以基本上是您所期望的,但是当我 运行 以下 .sh 脚本时:
#!/usr/bin/env bash
eval $(docker-machine env default)
输出为:
./run.sh
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default digitalocean Running tcp://***.**.***.***:**** v1.12.0
所以基本上,它没有将其设置为活动状态,我无法访问它。
有没有人运行以前遇到过这个问题并且知道如何解决它?对我来说真的很奇怪,除了这个方面之外,几乎所有其他东西都运行宁和自动化。
干杯,亚伦
我认为您需要获取 shell 脚本的来源
source ./myscript.sh
因为 eval 中的导出正在返回到您开始 运行 shell 的过程,然后被处理掉。这些需要转到 parent 例如登录 shell
考虑a.sh
#!/bin/bash
eval $(echo 'export a=123')
export b=234
当运行有两种方式
$ ./a.sh
$ echo $a
$ echo $b
$ source a.sh
$ echo $a
123
$ echo $b
234
$
我正在尝试 运行 一个简单的 shell 脚本来自动更改 docker 机器环境。问题是这样的,当我直接在Mac终端运行下面的命令输出如下:
eval $(docker-machine env default)
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * digitalocean Running tcp://***.**.***.***:**** v1.12.0
所以基本上是您所期望的,但是当我 运行 以下 .sh 脚本时:
#!/usr/bin/env bash
eval $(docker-machine env default)
输出为:
./run.sh
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default digitalocean Running tcp://***.**.***.***:**** v1.12.0
所以基本上,它没有将其设置为活动状态,我无法访问它。
有没有人运行以前遇到过这个问题并且知道如何解决它?对我来说真的很奇怪,除了这个方面之外,几乎所有其他东西都运行宁和自动化。
干杯,亚伦
我认为您需要获取 shell 脚本的来源
source ./myscript.sh
因为 eval 中的导出正在返回到您开始 运行 shell 的过程,然后被处理掉。这些需要转到 parent 例如登录 shell
考虑a.sh
#!/bin/bash
eval $(echo 'export a=123')
export b=234
当运行有两种方式
$ ./a.sh
$ echo $a
$ echo $b
$ source a.sh
$ echo $a
123
$ echo $b
234
$