shell - 错误 : unexpected end of file (expecting "do") for shell script in Dockerfile

标签 shell docker

我不想有另一个带有脚本的 .sh 文件,并且不想在 Dockerfile 中立即添加一个 shell 脚本代码。但是,我在镜像构建过程中收到一条错误消息:

/bin/sh: 语法错误:文件意外结束(期待“do”)

这是带有脚本的 Dockerfile 的一部分:

RUN cat .env | while [ read LINE ] \
do \
    envName=$(echo "$LINE" | grep -o "^[^\=]*") \
    echo "PassEnv $envName" >> httpd.conf \
done

任何想法有什么问题?

最佳答案

去掉方括号 [] ,并使用 ;在行尾,因为 docker 在看到您的 \ 时加入行's,所以命令会融化。

这对我有用:

RUN cat .env | while read LINE ;\
    do \
      envName=$(echo "$LINE" | grep -o "^[^\=]*"); \
      echo "PassEnv $envName" >> httpd.conf ;\
    done

关于shell - 错误 : unexpected end of file (expecting "do") for shell script in Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44375737/

相关文章:

linux - 如何直接从Linux hadoop edge节点自动复制文件到windows共享盘?

python - 如何使用 Celery 从 Python 代码动态添加/停止 worker

linux - 有人能告诉我这个代码片段的作用吗

java - 读取新终端窗口的控制台输出

linux - Docker 守护进程最近需要超过 1 分钟才能启动 - 为什么?

docker - 使用 docker compose 运行 Testcontainer 时的静态容器名称

Docker - apt-get 连接在 Debian 上被拒绝,但在 Ubuntu 上可以工作

amazon-web-services - Windows 10 Home上的Localstack提供ERR_CONNECTION_REFUSED

java - 通过 Maven 为 Node.js 项目运行 "npm install"+ 测试脚本

shell - 导出环境变量