← 全部文章

技术与生活 / 一篇记录

脚本先过语法关,再谈运行结果

语法检查可以提前发现括号或引号不配对,但不会证明业务逻辑正确。

缺失的引号、括号或分支结束符,经常要等到某个路径被解析时才暴露。bash -n 不执行主体,可以较早阻止这些基础错误进入计划任务。

从一个例子看起

以下示例使用 Bash,请在独立测试目录中理解输入、输出和退出码。

bash -n demo.sh

先制造一个缺失引号的样本,再确认检查会失败。

排查时再往前走一步

在独立样本中故意删除一个引号,确认检查返回非零。随后仍应以小规模数据验证逻辑;命令参数错误和外部服务异常不属于语法检查范围。

指定检查解释器时应与实际执行方式一致。一个使用 Bash 扩展的脚本,即使通过 bash -n,也可能在被 sh 调用时失败。入口 shebang、调用命令和运行环境需要相互吻合。

不要把语法检查通过等同于脚本已经安全执行过。

参考:Shell 文档。

搜索文章

输入关键词,找回一篇记录。