跳转到内容

错误与退出码

诊断包含来源、行号与列号:

interactive:1:6: undefined variable $missing

普通命令返回非零退出状态时,当前脚本或交互提交批次停止执行。 条件位置允许检查非零退出状态,但程序不存在等启动错误仍会导致失败。 管道返回最右侧失败阶段的非零退出状态,即使最后一个阶段成功也一样,包括上游因 SIGPIPE 退出的情况。 所有阶段的子进程都会被回收。 exit 接受 0 到 255 的退出码,并立即退出,即使它位于函数或嵌套表达式中;默认退出码为 0。

遇到顶层多余闭括号()、] 或 })时,reader 消耗这个字符、报告错误并继续读取。 表达式内的括号类型不匹配会报错;未完成的表达式会指出未闭合的开括号。 读取错误使脚本退出码为 2,运行时失败或显式退出可以覆盖它。命令不存在时使用 127,权限不足时为 126,其他语言错误为 2。

浏览器中,语法错误会保留草稿并阻止整批执行;修改草稿或清空后可继续提交。运行错误停止当前批次,后续新输入仍可执行。未提供的命令会给出能力限制提示。会话退出后,可用重置按钮重新开始。

普通失败可以用 try/catch/finally 处理。$? 保存完整结果,区分信号终止与数值相同的正常退出。capture-call、wait 返回可查询结果,check 对其应用失败终止策略。详见执行结果与后台任务。