Linux环境执行Shell脚本报错求助:文件未找到及语法错误
解决Shell脚本执行报错问题
错误原因分析
你遇到的报错包含两个核心问题:
- 大量
: not found our.sh:提示:这是因为脚本采用了Windows格式的换行符(CRLF),而Linux系统仅识别LF换行符,导致Shell将换行符误判为命令的一部分,无法解析。 - 行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
相关产品推荐
相关产品推荐

