是否有 Bash 到 POSIX 1003.2(a) 转译器?

是否有 Bash 到 POSIX 1003.2(a) 转译器?

我有一个用 bash 编写的程序,它使用了许多 bashism。我知道有checkbashismshellcheckbash--posix非常适合手动审查。但我真正想要的是类似 python 的东西2对3我假设它存在(如果不存在我可能会写它)。

本质上,我想继续在现代 bash 中编写我的程序,但也有一个运行如下所示的构建脚本:

$ bash2posix myprogram.sh > myprogram-compat.sh

它会“修复”它能解决的问题,如果有它不能解决的问题,它就会阻止你。我还没有找到任何存在的证据,有人知道吗?谢谢。

编辑:我很确定这是可以做到的。通常有相当昂贵的等同于许多羞辱的东西。例如 ( ) 的字符串替换可以通过内置函数使用精度运算符 ( ) 来“搜索”字符串中的给定后缀来${//}完成。然后,您可以测试替换命令的长度以查看是否“找到”它,然后用替换命令重新构造一个新字符串。这样有效率吗?不,当然不是,但完全有可能。printf.

答案1

这是不可能的。至少不是100%。

我已经写了来自 GNU Parallel 的env_parallel.dash文章env_parallel.bash。 (https://git.savannah.gnu.org/cgit/parallel.git/tree/src/env_parallel.dashhttps://git.savannah.gnu.org/cgit/parallel.git/tree/src/env_parallel.bash

您无法转换env_parallel.bash为,env_parallel.dash因为typeset -f myfunc(show body of a function) 在 中没有等效项dash

相关内容