捕获 shell 脚本中的语法错误数量

捕获 shell 脚本中的语法错误数量

编辑:这个问题被标记为重复。虽然这在更大范围内可能是正确的,但库萨拉南达提供的答案让我更好地理解了我的选择。

如果 shell 脚本内发生语法错误,脚本的解释不一定会终止,而只是在脚本的下一行继续。有没有办法在解释脚本时捕获这些语法错误的数量?

我真的很想要一份类似编译器报告的东西,说明编译完成后的错误和警告数量。仅适用于 Linux shell。

答案1

是的。如果其中的任何命令生成错误,大多数 shell 都可以终止当前脚本。这通常是通过

set -e

并且可以通过以下方式关闭

set +e

编辑: 我误解了这个问题。 Bash 和其他 shell 还可以-n选择不执行脚本,但检查其语法错误。

$ bash -n script.sh

-e和选项均由-nPOSIX 描述。对于-n,标准规定:

shell 应读取命令但不执行它们;这可用于检查 shell 脚本语法错误。交互式 shell 可能会忽略此选项。

澄清:这个答案是关于语法检查,而不是检查 POSIX 一致性。使用自己的语义扩展 POSIX 的 shell 仍然可以检查-n使用扩展语义编写的脚本的语法(使用 )。这并没有说明 shell 或脚本的 POSIX 一致性,只是说明 shell 脚本对于所讨论的 shell 在语法上是否正确,这就是问题所在。

相关内容