Skip to content

[Bug] 自动任务 105「服务启动后热更新在线订阅(不重启)」生成 afstart 后导致 syntax error: unexpected "(" #1331

Description

@zaiqixiao

Verify steps

  • 我已经在 Issue Tracker 中找过我要提出的问题 I have searched on the issue tracker for a related issue.
  • 我已经使用公测版本测试过,问题依旧存在 I have tested using the test mod, and the issue still exists.
  • 我已经仔细看过 常见问题 并无法自行解决问题

Description

环境:
Device: Xiaomi AX3000T
ShellCrash: 1.9.5beta1

描述:

在小米路由器环境中启用以下启动后自动任务:

107 服务启动后自动同步 NTP 时间
105 服务启动后热更新在线订阅(不重启)

ShellCrash 生成的:

/data/ShellCrash/configs/task/afstart

内容为:

/data/ShellCrash/task/task.sh 107 服务启动后自动同步 NTP 时间
/data/ShellCrash/task/task.sh 105 服务启动后热更新在线订阅(不重启)

ShellCrash 启动时执行 afstart.sh 后报错:

/data/ShellCrash/starts/afstart.sh: /data/ShellCrash/configs/task/afstart: line 2: syntax error: unexpected "("

设备的 /bin/sh 指向 BusyBox:

root@XiaoQiang:~# ls -l /bin/sh
lrwxrwxrwx 1 root root 7 Aug 25 2025 /bin/sh -> busybox

推测原因是自动任务名称被直接作为未引用的 shell 参数写入 afstart,其中:

(不重启)

包含 shell 特殊字符 ( 和 ),BusyBox ash 在解析时将其识别为 shell 语法,从而报错。

手动修改:

/data/ShellCrash/configs/task/afstart

将任务名称加双引号:

/data/ShellCrash/task/task.sh 107 "服务启动后自动同步 NTP 时间"
/data/ShellCrash/task/task.sh 105 "服务启动后热更新在线订阅(不重启)"

之后即可避免:

syntax error: unexpected "("

但该文件可能会被 ShellCrash 后续重新生成,因此只能作为临时规避方案。

Related issues

与历史 Issue #837 很相似:

#837:任务 105 名称中的括号导致 bfstart 出现 ( 附近语法错误
本 Issue:目前相同类型的问题发生在 afstart

因此怀疑这是此前问题在「服务启动后任务 / afstart」生成逻辑中的遗漏或回归。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions