如今,我正在研究 shell 脚本的性能调优,并且我已经被阻止使用 POSIX shell 脚本,但这只是一个标准,但我认为它比标准更难实现。它经过定制,经过调优,最终赢得了高性能。我认为你可以帮助我/我们创建一个线程来帮助 POSIX shell 脚本编写。我的问题是:
- POSIX shell 脚本与其他 shell 编程相比是否具有高性能?
- 如何迁移到 POSIX shell 脚本?
- 不可能只将我的代码暴露给 POSIX 吗?
- 如果您更喜欢不使用 POSIX 的高性能,您能说明一下吗?
答案1
问题
当学生在使用 bash 的系统(例如 /bin/sh)上进行初始开发时,他们的脚本经常会遇到可移植性问题。虽然 bash 支持 POSIX 标准中的所有功能,但它还支持 POSIX 未定义的广泛扩展功能。当编写脚本使用此类“bashisms”时,当 /bin/sh 是其他一些符合 POSIX 标准的 shell 时,不能保证该脚本能够正确运行。在 Ubuntu 系统 Nice.harvard.edu 上,/bin/sh 是 dash,这是一个运行速度比 bash 快得多的 shell,但不支持超出 POSIX 标准指定的功能。在脚本中使用过“bashisms”的学生经常在最后一刻发现他们的脚本无法在nice 上的/bin/sh 下运行。
解决方案
以下是一些可以帮助您避免此类问题的提示:
- 如果可能的话,总是使用 /bin/sh 在 Nice 上开发脚本
- 在您的个人系统上安装严格的 POSIX shell(例如 dash)以用于开发目的
- 只使用指定的功能这里开发 shell 脚本时
- 看法这个文件获取有关识别和替换“bashisms”的提示
- 查看autoconf的完整文档('info autoconf.info'),它有一个很好的关于“便携式 Shell”编程的部分
看这了解更多信息。