在Dockerfile中运行RUN命令

我有一个像这样的行:

RUN for i in `xyz`; do echo "$i"; done 

打算打印这三个项目的每一个

但是它会引发/bin/sh: 1: x: not found

任何想法我做错了什么?

看起来你正在使用反引号。 反引号中的内容被执行,反引号中的文本被结果返回的内容replace。

尝试使用单引号或双引号而不是反引号

尝试摆脱这样的反响:

 RUN for i in xyz; do echo "$i"; done 

我其实会提出一个替代scheme。

在docker文件中取代LOOP,我们可以退后一步了吗?

在独立的bash脚本中实现循环;

这意味着你将有一个loop.sh如下:

#!/bin/bash

for i in $(seq 1 5); do echo "$i"; done

在你的Dockerfile中,只需要:

RUN ./loop.sh

而不是使用Run使用CMD ,那么你可以像使用shell命令一样执行循环。

看看这个相关的问题作为参考: 在Docker cmd中的recursionwhile循环