最近在写 Bash shell script,想到 Bash 4.3 有个 nameref 的特性,但是之前版本都是没有的。 而且 Bash 3 也没有 Associative Array。 于是产生一个疑问,写脚本有必要兼容到 Bash 3 吗?
顺便统计一下,如果你在用 bash,现在用的是什么版本号的 bash ?
1
goreliu 2019-06-03 12:40:34 +08:00 via Android
如果一个环境的 bash 版本只有 3,那就不只是 bash 版本低了,很可能 coreutils、awk、sed 等等版本都很低,除了专门适配,不然不兼容是很自然的。
|
2
mattx 2019-06-03 14:07:57 +08:00 1
可以通过关注常见发行版的 bash 版本, 来判断, 比如 debian 8+, ubuntu 16+
|
3
Kobayashi 2019-06-04 08:30:04 +08:00 via Android 1
最新 5.x 19 年新出,4.0 是 2009 年出的,10 年过去了,这还用问吗?
恐怕除了 macOS 除了 GPL 3 协议原因,默认 /usr/bin/bash 还是 3 (直接检查 BASH_VERSION 让这些脑残升级),其他发行版最差也得是 4。 不同版本新特性速查: http://mywiki.wooledge.org/BashFAQ/061 参考来自最好的 Bash wiki |
4
Kobayashi 2019-06-04 08:32:09 +08:00 via Android
另外,4.x 已经进入维护阶段。根据上面参考链接,4.4 最后新特性添加于 2016 年。
|
5
adoyle OP @Kobayashi 你说的这些我也知道啊,不代表别人也知道,所以需要来做下统计。
另外最新版本发布,不代表用户就会主动升级。我问过一些用 mac 的同事,他们都在用 bash 3,因为他们不常用 bash,所以没有升级的需求。 还是要感谢你的分享。 |