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

Bash脚本报错unexpected end of file,请求排查解决

解决Bash函数语法错误:unexpected end of file

你的问题出在Bash函数的语法格式不规范上,核心是函数体内部的语句分隔和大括号的使用不符合Bash的解析规则。Bash对函数定义的语法有明确要求:

  • 函数起始的大括号{后面,必须用分号或者换行和后续语句分隔
  • 函数体内的多条命令之间,必须用分号或者换行分隔
  • 函数结束的大括号}前面,最后一条命令也需要用分号或换行和大括号分隔

修正后的完整代码

function sindex {
    x="${1%%$2*}"
    [[ $x = $1 ]] && echo -1 || echo ${#x}
}

T_ID_INDEX=$(sindex "$TARGET_RETURN" "id=")
T_ID_INDEX=$((T_ID_INDEX + 4))
T_ID=${TARGET_RETURN:T_ID_INDEX:36}

如果偏好把函数写在一行,必须用分号正确分隔所有部分:

function sindex { x="${1%%$2*}"; [[ $x = $1 ]] && echo -1 || echo ${#x}; }

T_ID_INDEX=$(sindex "$TARGET_RETURN" "id=")
T_ID_INDEX=$((T_ID_INDEX + 4))
T_ID=${TARGET_RETURN:T_ID_INDEX:36}

错误原因详解

你原来的代码把函数体的两条命令写在一行却没有加分号,同时起始大括号后也没有正确分隔,导致Bash无法识别完整的函数结构,误以为函数定义未完成,从而抛出unexpected end of file错误。另外你尝试添加的done、fi是循环和条件判断的结束关键字,和函数定义无关,自然解决不了问题。

内容的提问来源于stack exchange,提问作者h.lina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:39:05