许多程序使用以下命令返回其版本号:
$ program --version program (platform info) v1.2.3
这对于脚本化程序的安装或维护是有用的,并且一些其他受控的自动化魔术从系统管理员&朋友。
问题
如何轻松获取Erlang(OTP)的版本号?
网络上
这里有一些不令人满意的解决方案([1]和其他教程/ Erlang文档):
模拟器
$ erl 1> erlang:system_info(otp_release). "R13B03"
难以脚本。我没有找到一种方法来erl从shell提示符执行单个命令。
发布文件
$ cat /usr/lib/erlang/releases/RELEASES [{release,"OTP APN 181 01","R13B03","5.7.4",[{kernel,"2.13.4","/usr/lib/erlang/lib/kernel-2.13.4"},{stdlib,"1.16.4","/usr/lib/erlang/lib/stdlib-1.16.4"},{sasl,"2.1.8","/usr/lib/erlang/lib/sasl-2.1.8"}],permanent}].
解析天堂(带壳)。
另一种方法是检查安装路径,但不可移植(我的安装路径不包括版本)。
个人上下文:我写一个脚本在几台机器上安装与插件相同版本的RabbitMQ。一些插件对OTP版本的要求最低,这是这个问题的开始。
erl -eval 'erlang:display(erlang:system_info(otp_release)),halt().' -noshell