46 votes

Comment récupérer la version Java à l'aide d'une commande à une seule ligne sous Linux

Je veux récupérer la version Java sous Linux en une seule commande.

Je suis nouveau sur awk donc j'essaye quelque chose comme

 java -version|awk '{print$3}'  

Mais cela ne renvoie pas la version. Comment puis-je récupérer le 1.6.0_21 partir de la sortie de la version Java ci-dessous ?

 java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) 64-Bit Server VM (build 17.0-b16, mixed mode)

84voto

Prince John Wesley Points 22418
  1. Rediriger stderr vers stdout.
  2. Obtenir la première ligne
  3. Filtrez le numéro de version.

     java -version 2>&1 | head -n 1 | awk -F '"' '{print $2}'
    

9voto

Beauness_Round Points 91

Il s'agit d'une légère variation, mais la solution de PJW n'a pas tout à fait fonctionné pour moi :

 java -version 2>&1 | head -n 1 | cut -d'"' -f2

il suffit de couper la chaîne sur le délimiteur " (guillemets doubles) et d'obtenir le deuxième champ.

5voto

Timothy Aanerud Points 51

Je suggérerais d'utiliser grep -i version pour vous assurer d'obtenir la bonne ligne contenant la chaîne de version. Si vous avez défini la variable d'environnement JAVA_OPTIONS, openjdk imprimera les options Java avant d'imprimer les informations de version. Cette version renvoie 1.6, 1.7 etc.

 java -version 2>&1 | grep -i version | cut -d'"' -f2 | cut -d'.' -f1-2

2voto

gerardw Points 330

Depuis (au moins sur mon système Linux) la chaîne de version ressemble à "1.8.0_45":

  #!/bin/bash
 function checkJavaVers {
    for token in $(java -version 2>&1)
    do
        if [[ $token =~ \"([[:digit:]])\.([[:digit:]])\.(.*)\" ]]
        then
            export JAVA_MAJOR=${BASH_REMATCH[1]}
            export JAVA_MINOR=${BASH_REMATCH[2]}
            export JAVA_BUILD=${BASH_REMATCH[3]}
            return 0
        fi
    done
    return 1
}

#test
checkJavaVers || { echo "check failed" ; exit; }
echo "$JAVA_MAJOR $JAVA_MINOR $JAVA_BUILD"
~

1voto

Oo.oO Points 4324

Vous pouvez utiliser --version et dans ce cas, il n'est pas nécessaire de rediriger vers stdout

 java --version | head -1 | cut -f2 -d' '

De l'aide Java

 -version      print product version to the error stream and exit
--version     print product version to the output stream and exit

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X