我正在尝试编写Windows .bat文件来自动执行Docker环境的设置。我唯一的问题似乎是“FOR”循环行,该行破坏了脚本,并且当然永远不会进入docker-compose。倒数第二行与docker机器输出所提供的完全相同,可以毫无问题地粘贴到CMD中来运行。是否有某些原因无法通过.bat正常运行?

@echo off
docker-machine start
docker-machine ip > hostname.txt
set /p REN_RT_EXTERNAL_IP=<hostname.txt
del hostname.txt
echo Host-ip: %REN_RT_EXTERNAL_IP%
@FOR /f "tokens=*" %i IN ('docker-machine env') DO @%i
call docker-compose up

引发的错误是:“我这次是意外的。”

最佳答案

当直接在 shell 中运行FOR循环(不使用脚本)时,您应该可以使用以下命令-将@%i替换为%i:

FOR /f "tokens=*" %i IN ('docker-machine env') DO %i

由于您是在.bat文件中运行此程序,因此必须使用双百分号对变量进行转义,如下所示:
FOR /f "tokens=*" %%i IN ('docker-machine env') DO %%i

参考:https://github.com/docker/machine/issues/3023

关于docker - docker-通过Windows bat文件编写?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40022796/

10-16 06:26
查看更多