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.]
perdre la tête et utiliser awk: java -version 2> & 1 | awk « NR == 1 {gsub (/ "/," "); print $ 3} ' – ghostdog74
@monojohnny est-il possible de l'imprimer à l'écran depuis le shell sans exécuter un script? – Michael
@Michael vous voulez dire autre chose que d'utiliser simplement" java -version "? – kevingreen