测试POSIX shell兼容性?

8

我该如何测试shell脚本以验证其是否符合POSIX标准?我有一组用于各种版本的Bash和可能其它shell编写的大量脚本。我想确定哪些是完全符合POSIX标准的,哪些不是。理想情况下,我希望找到类似于lint但适用于shell脚本的工具。


1
虽然它没有声称测试完全符合POSIX标准,但一个常用的类似脚本是checkbashisms。它测试并报告不可移植的语法。 - John1024
1
请使用 #!/bin/ksh 作为默认选项,这样您就可以避免在 bash 中更容易的事情。这只是一个开始,您还必须跳过 Linux 的改进,例如 sed -i - Walter A
可能是重复问题:https://dev59.com/lXA65IYBdhLWcg3wuRF8 - Thomas Dickey
密切相关;可能是重复的。https://dev59.com/QWgu5IYBdhLWcg3wWl8q - Todd A. Jacobs
已问已答:如何测试Shell脚本的POSIX兼容性? - Todd A. Jacobs
请查看将Bash脚本转换为Shell - pjh
1个回答

2
无法静态验证脚本是否符合POSIX标准,因为差异不仅限于语法变化,有些差异会改变某些命令的行为方式。这个链接描述了Bash和POSIX标准之间的差异。
但是,您可以通过使用bash --posix ./your_script.sh或在脚本内部使用set -o posix来显式检查您的脚本。

Bash的POSIX兼容模式不幸地不符合POSIX标准。请参见https://tiswww.case.edu/php/chet/bash/POSIX以及您发布的URL的末尾。至少,您还需要启用“xpg_echo”选项才能获得符合POSIX标准的“echo”行为。还有其他事情。我建议使用dash进行POSIX兼容性测试。 - Ferry Boender

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接