Docker build执行Shell命令报Syntax error:"(" unexpected 如何解决?
问题原因
Dockerfile 中 RUN 指令默认使用 /bin/sh 解析命令,你用到的 <() 属于 bash 特有的进程替换语法,/bin/sh 不支持该特性,因此会抛出括号语法错误。
单行解决方案
方案1:显式指定bash执行(保留原有写法逻辑)
直接在RUN指令中调用bash执行命令即可兼容进程替换语法:
RUN bash -c 'pip uninstall -y -r <(pip freeze)'
方案2:使用管道+xargs实现(兼容性更强,无需依赖bash)
通过管道将pip freeze的输出直接传递给pip uninstall,不需要临时文件也不需要bash特性,/bin/sh下可直接运行:
RUN pip freeze | xargs pip uninstall -y
内容的提问来源于stack exchange,提问作者GlaceCelery
相关产品推荐
相关产品推荐

