无法在docker构建期间使用进程替换,因为bash进入posix模式

无法在docker构建期间使用进程替换,因为bash进入posix模式,bash,shell,docker,dockerfile,Bash,Shell,Docker,Dockerfile,在Dockerfile中,我希望使用流程替换: RUN echo <(echo '$DATA:'"$DATA") 我尝试关闭POSIX模式: RUN set +o posix && echo <(echo '$DATA:'"$DATA") 假设您的sh不是bash,您不能在shell模式下直接使用进程替换;您需要生成一个bash会话(非登录,此处非交互): 另外,这只是输出文件描述符,我不确定您的计划。如果您确定正在构建的映像中有bash,那么您可以使用shell

在Dockerfile中,我希望使用流程替换:

RUN echo <(echo '$DATA:'"$DATA")
我尝试关闭POSIX模式:

RUN set +o posix && echo <(echo '$DATA:'"$DATA")

假设您的
sh
不是
bash
,您不能在
shell
模式下直接使用进程替换;您需要生成一个
bash
会话(非登录,此处非交互):


另外,这只是输出文件描述符,我不确定您的计划。

如果您确定正在构建的映像中有
bash
,那么您可以使用
shell
命令更改shell调用,我在中介绍了该命令

您可以使用
SHELL[“/bin/bash”、“-c”]
。考虑:

$docker build--无缓存-跑猫咪)
正在将生成上下文发送到Docker守护程序2.048kB
步骤1/3:从fedora开始
--->ef49352c9c21
步骤2/3:SHELL[“/bin/bash”,“-c”]
--->在e78260e6de42中运行
拆卸中间容器e78260e6de42
--->ff6ec782a9f6
步骤3/3:在afbb42bba5b4中运行cat Running
你好,世界
拆卸中间容器afbb42bba5b4
--->25f756dcff9b
已成功构建25f756dcff9b

它实际上是bash,只是没有这样调用。我在一次编辑中明确了这一点。第二次运行命令给了我
container\uLinux。go:247:启动容器进程导致“exec:\”echo@AndreKR Ooops,我的坏消息。现在检查一下。结果是:
/bin/sh:echo看起来像是StackOverflow的语法在这个问题上被破坏了。我不确定我是否可以或者如何解决这个问题,最简单的解决方法就是关掉它;请参见编辑执行此操作。:--顺便说一句,如果你真的想使用较旧的四空格缩进语法,缩进块之前的
也会这样做。嘿,我只是使用了“较旧的四空格缩进语法”,因为我知道StackOverflow使用了这种语法。现在还有更好的语法吗?
RUN set +o posix && echo <(echo '$DATA:'"$DATA")
Step 7 : RUN ls -l /bin/sh
---> Running in 93a9809e12a7
lrwxrwxrwx    1 root     root             9 Dec 28 03:38 /bin/sh -> /bin/bash
RUN [ "/bin/bash", "-c", "echo <(echo '$DATA:'\"$DATA\")" ]
RUN "echo <(echo '$DATA:'"$DATA")"