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

Linux环境执行Shell脚本报错求助:文件未找到及语法错误

解决Shell脚本执行报错问题

错误原因分析

你遇到的报错包含两个核心问题:

  1. 大量: not found our.sh: 提示:这是因为脚本采用了Windows格式的换行符(CRLF),而Linux系统仅识别LF换行符,导致Shell将换行符误判为命令的一部分,无法解析。
  2. 行289的Syntax error: end of file unexpected (expecting "then"):说明脚本内的条件判断(如if语句)结构不完整,要么是if对应的then缺失,要么是if/then/fi的嵌套逻辑未闭合,文件就已结束。

解决步骤

1. 修复换行符格式问题

将脚本的CRLF换行符转换为Linux兼容的LF:

  • 若系统安装了dos2unix工具,直接执行:
    dos2unix our.sh
    
  • 无dos2unix时,用sed命令转换:
    sed -i 's/\r$//' our.sh
    

2. 修复条件判断语法错误

定位到脚本第289行附近,检查if语句的语法结构:

  • 确保每个if都匹配对应的then,标准结构如下:
    # 基础格式
    if [ 条件表达式 ]; then
        # 执行命令
    fi
    
    # 或扩展格式
    if [[ 条件表达式 ]]; then
        # 执行命令
    fi
    
  • 检查是否存在if语句未写入then就换行,或者代码块遗漏fi的情况。可以用以下命令查看第289行前后的内容:
    cat -n our.sh | sed -n '280,300p'
    

3. 验证修复效果

先检查脚本语法是否合法:

bash -n our.sh

若该命令无输出,说明语法正确,再执行脚本:

sh our.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:49:54