从python获取Java版本号

发布于 2021-01-29 17:29:05

我需要从python(或bash)获取java版本号,例如“ 1.5”。

我会用:

os.system('java -version 2>&1 | grep "java version" | cut -d "\\\"" -f 2')

但这返回1.5.0_30

例如,如果数字更改为“ 1.10”,则需要兼容。

我想使用cut或grep甚至sed。它应该在一行中。

关注者
0
被浏览
235
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    考虑这样的输出:

    $ java -version
    java version "1.8.0_25"
    Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
    Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
    

    您可以这样获得版本号awk

    $ java -version 2>&1 | awk -F[\"_] 'NR==1{print $2}'
    1.8.0
    

    或者,如果您只想使用前两位.分隔的数字:

    $ java -version 2>&1 | awk -F[\"\.] -v OFS=. 'NR==1{print $2,$3}'
    1.8
    

    在这里,awk将字段分隔符设置为"_(或.),以便将线切成片。然后,它在第一行(用表示NR==1)上打印第二个字段。通过设置,OFS我们指出什么是输出字段分隔符,这样一来,该命令将print $2, $3打印第二个字段,然后打印第三个字段,中间是一个.

    要在Python中使用它,您需要正确地转义:

    >>> os.system('java -version 2>&1 | awk -F[\\\"_] \'NR==1{print $2}\'')
    1.8.0
    >>> os.system('java -version 2>&1 | awk -F[\\\"\.] -v OFS=. \'NR==1{print $2,$3}\'')
    1.8
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看