我正在尝试编写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/