避免 shell 脚本中的“BASH-isms”

避免 shell 脚本中的“BASH-isms”

有没有类似的工具Perl::评论家它将检查您的 shell 脚本并指出缺陷、可移植性问题、无回退的非标准程序的使用、折旧的程序使用等?

我意识到这set -o posix将禁用非 POSIX 使用,但这不会告诉我我想知道的事情,例如 zsh 索引 shell 数组从 1 开始,bash 从 0 开始索引,而 ash 根本不支持数组。

答案1

制止主义。在 Debian 上,它作为包维护工具

在下面测试您的脚本短跑豪华。两者都有一些非 POSIX 构造,但如果您的脚本在两者中都可以工作,那么它可能在大多数地方都可以工作。 (需要注意的是,测试典型的 shell 脚本很困难,因为它们往往有很多极端情况。)

如果您打算将脚本移植到嵌入式 Linux 平台,请使用以下命令测试它们忙碌盒。请注意,BusyBox 可能受到或多或少的限制,具体取决于您想要的嵌入式系统有多小;脚本依赖某些 BusyBox 安装所没有的功能是很正常的。

请注意,不可移植性不仅仅来自 shell,它还来自外部实用程序。 OpenBSD 和 Solaris 往往提供具有 POSIX 功能的实用程序,仅此而已,因此它们非常适合测试可移植性。

您需要参考POSIX规范,以及中提到的其他资源这个线程(特别是自动配置手册);但这只是文档,如果您不小心使用了某个功能,它就没有帮助。

相关内容