我写了一个 shell 脚本,它使用一些 BASH 特定命令,例如 [[ ... ]]
。我知道某些 BASH 功能仅在 BASH 4 或更新版本中可用。如何在不尝试大量不同版本的情况下找出此脚本需要的 BASH 版本?
是否有某种工具可以检查所需的最低版本?
源代码在 GitHub 上可用 https://github.com/JEFF-Media-GbR/RandomRound/blob/master/randomround
最佳答案
有很多资源可以检查 a) 特定 Bash 特性的介绍和 b) 一般的 Bashism:
- BashFAQ/061 (“是否有向 Bash 的特定发行版(版本)添加了哪些功能的列表?”)
- Bash changes关于 Bash 黑客
- Bash release notes
这些都可以用来判断一个特性是什么时候引入的。
对于 Bashisms 的列表,Bash 手册在 Appendix B 中描述了与 Bourne Shell 的差异。 (“与 Bourne Shell 的主要区别”),还有文章 How to make bash scripts work in dash在 Wooledge 维基上。
我不知道“野外”版本的分布是什么,但如果您的用户群包括 macOS 用户,请注意他们使用 Bash 3.2,除非他们使用 Homebrew 或类似软件进行升级。
至于以编程方式确定运行特定脚本所需的 Bash 版本,我不知道有任何工具可以做到这一点。 Shellcheck有点接近,因为当您的脚本以 #!/bin/sh
开头时,它可以警告 Bashisms。
关于bash - 找出脚本需要的 BASH 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45692956/