我有一个用 bash 编写的程序,它使用了许多 bashism。我知道有checkbashism
和shellcheck
bash--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.dash和https://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
。