it-swarm.com.de

So rufen Sie die Java-Version mit einem einzeiligen Befehl in Linux ab

Ich möchte die Java-Version in Linux mit einem einzigen Befehl abrufen. 

Ich bin neu bei awk, also versuche ich so etwas 

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

Aber das gibt die Version nicht zurück. Wie kann ich den 1.6.0_21 von der unten angegebenen Java-Version abrufen?

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)
42
abi1964
  1. Leiten Sie stderr zu stdout um. 
  2. Erste Zeile bekommen 
  3. Filtern Sie die Versionsnummer.

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

Dies ist eine leichte Variante, aber die Lösung von PJW hat für mich nicht ganz funktioniert:

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

schneiden Sie einfach den String auf das Trennzeichen " (doppelte Anführungszeichen) und erhalten Sie das zweite Feld.

9
Beauness_Round

Ich würde empfehlen, grep -i version zu verwenden, um sicherzustellen, dass Sie die richtige Zeile mit der Versionszeichenfolge erhalten. Wenn Sie die Umgebungsvariable Java_OPTIONS gesetzt haben, druckt openjdk die Java-Optionen, bevor Sie die Versionsinformationen drucken. Diese Version gibt 1.6, 1.7 usw. zurück.

Java -version 2>&1 | grep -i version | cut -d'"' -f2 | cut -d'.' -f1-2
3
Timothy Aanerud

Da (zumindest auf meinem Linux-System) der Versionsstring wie folgt aussieht: "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"
~
1
gerardw

Sie können --version und in diesem Fall ist es nicht erforderlich, zu stdout umzuleiten

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

Von Java Hilfe

-version      print product version to the error stream and exit
--version     print product version to the output stream and exit
1
Oo.oO

Nur das "Major" Build # erhalten:

Java -version 2>&1 | head -n 1 | awk -F'["_.]' '{print $3}'
0
bentzy

Dieser Weg funktioniert für mich.

# Java -version 2>&1|awk '/version/ {gsub("\"","") ; print $NF}'

1.8.0_171
0
Shirish Shukla