You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建服务时Apache报错:pete_install.sh出现end of file unexpected语法错误

问题排查及解决方案

核心错误原因

  • 换行符格式不兼容:脚本是在Windows环境下编辑的,默认使用CRLF(\r\n)作为换行标识,Linux系统仅识别LF(\n)换行,行尾残留的\r字符会被系统识别为命令的一部分,所以触发第2行: not found的报错。
  • 条件分支结构不完整:脚本开头第4行的if [ ! -f "$FILE" ]; then判断没有对应的fi闭合,Shell解析到文件末尾都没有找到匹配的闭合标识,因此触发第110行的语法错误。

修复方案

  1. 转换换行符格式
    你可以任选以下一种方法完成格式转换:
    • 安装dos2unix工具后执行:dos2unix /usr/local/bin/pete_install.sh
    • 用sed命令直接删除行尾的\r字符:sed -i 's/\r$//' /usr/local/bin/pete_install.sh
    • 后续在Windows编辑Shell脚本时,提前将编辑器的换行符设置调整为LF格式再保存。
  2. 补全条件分支闭合
    统计脚本中if关键字的数量,确保和fi关键字的数量完全匹配,开头的未闭合if分支在对应逻辑执行完成后补上fi即可。
  3. 预检查脚本语法
    修复完成后可以先执行静态语法检查,不用实际运行脚本就能验证语法是否正确:bash -n /usr/local/bin/pete_install.sh,如果没有任何输出就说明语法没问题。

额外注意事项

当前脚本中ssh-keygen生成的密钥默认存储在执行用户的家目录路径~/.ssh/id_rsa,后续chmod修改权限的路径是/var/www/.ssh/,需要确认执行脚本的用户家目录是否为/var/www,避免生成的密钥和修改权限的路径不匹配导致后续权限报错。

内容的提问来源于stack exchange,提问作者KatiaSisHost

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:18:04