2009-12-09 5 views
2

Salut Je veux écrire un script shell qui retournera la version de JRE installée. Comment écrire un fichier script shell pour réaliser ce qui précède.comment écrire un script shell pour obtenir la version JRE

Si j'écris java -version alors l'application retourne "1.6.0_14" Java (TM) SE Runtime Environment (build 1.6.0_14-b08) Java HotSpot (TM) VM Server (construire 14.0-b16, mixte Mode) ».

Mais je veux dONOT une chaîne. Je ne veux que la version jre.

Sunil Kumar grâce sahoo

Répondre

4

Si vous voulez juste la version (plutôt que la chaîne entière), vous pouvez faire quelque chose comme:

- Enregistrer ce que (par exemple) javaversion.sh

#!/bin/sh 
# Changed code to remove the 'head -1' as per the suggestion in comment. 
JAVA_VERSION=`java -version 2>&1 |awk 'NR==1{ gsub(/"/,""); print $3 }'` 
# export JAVA_VERSION 
echo $JAVA_VERSION 

cela donne:

$ 1.6.0_15 

Sur mon système (putain, encore plus démodé !! :-))

J'ai trouvé '2> & 1' nécessaire sur mon système, puisque la sortie semble aller à 'stderr' plutôt qu'à 'stdout'. (2> & 1 = envoyer la sortie de l'erreur standard au flux de sortie standard, dans ce cas nous pouvons aller de l'avant et traiter avec la tête etc ...).

Le bit 'gsub' dans l'awk est nécessaire pour supprimer les guillemets dans la chaîne. (SUBstitue global), $ 3 est le troisième champ (awk place par défaut son séparateur de champ dans l'espace blanc). Les "backticks" (`) sont utilisés afin que nous puissions capturer la sortie - et ensuite nous l'enregistrons sur une variable.

[Utilisation 'couper' plutôt que 'awk' pourrait être plus élégant ici - voir le poste de GrzegorzOledzki.]

+0

perdre la tête et utiliser awk: java -version 2> & 1 | awk « NR == 1 {gsub (/ "/," "); print $ 3} ' – ghostdog74

+0

@monojohnny est-il possible de l'imprimer à l'écran depuis le shell sans exécuter un script? – Michael

+0

@Michael vous voulez dire autre chose que d'utiliser simplement" java -version "? – kevingreen

1
#!/bin/sh 

java -version 
-1

Jetez un oeil à la sortie de

java -version 
-1

Vous pouvez obtenir la version du installée JRE en utilisant la commande java, avec le commutateur -version:

$ java -version 
java version "1.6.0_14" 
Java(TM) SE Runtime Environment (build 1.6.0_14-b08) 
Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode) 
6

Suivant l'idée derrière la réponse de monojohnny, mais en utilisant cut au lieu de awk:

java -version 2>&1 | head -n 1 | cut -d\" -f 2 
1

Alternativement:

Ecrivez une classe Java accédant à la propriété système "java.version": qui supprimera certaines autres valeurs de mise en forme et vous permettra de sortir en sortie standard plutôt qu'en erreur standard .

tout simplement avoir votre script shell appeler avec un

java -cp <classpath> GetJavaVersion.class 
1

il suffit d'utiliser le shell

$ a=$(java -version 2>&1 >/dev/null) 
$ set -- $a 
$ echo $3 
"1.6.0_0" 
Questions connexes