使用Docker Desktop执行Makefile的convert动作报错,求修复方案
修复dbc2csv Docker运行时的脚本语法错误
问题根源
报错Syntax error: word unexpected (expecting "do")主要是两个原因:
- Windows环境下的文件换行符(CRLF)和Linux容器不兼容,shell脚本无法识别换行格式
dbc2dbf.sh脚本缺少正确的shebang头,导致系统用错误的解释器执行脚本
修复步骤
转换为Linux兼容的换行符
如果你是在Windows环境下下载或编辑过仓库文件,文件会默认携带Windows的CRLF换行格式,需要转成Linux的LF格式:- 用Notepad++打开
dbc2dbf.sh,点击「编辑」→「文档格式转换」→「转为UNIX(LF)」,保存后重新运行Docker命令。 - 或者直接在Docker容器内转换:先进入容器交互模式,执行以下命令:
apt-get update && apt-get install -y dos2unix dos2unix dbc2dbf.sh - 也可以先关闭Git的自动换行转换,再重新克隆目标仓库:
git config --global core.autocrlf false git clone 你下载的目标仓库
- 用Notepad++打开
添加正确的shebang头
打开dbc2dbf.sh,确保第一行是#!/bin/bash或者#!/bin/sh,这行代码用于指定脚本的执行解释器。赋予脚本执行权限
执行以下命令为脚本添加可执行权限:chmod +x dbc2dbf.sh
完成以上操作后,重新运行你的Docker命令即可正常执行。
内容的提问来源于stack exchange,提问作者pinkthepink
相关产品推荐
相关产品推荐

