Je souhaite obtenir uniquement la version de php installée sur CentOS.
Sortie de php -v
PHP 7.1.16 (cli) (built: Mar 28 2018 13:19:29) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
J'ai essayé ceci:
php -v | grep PHP | awk '{print $2}'
Mais la sortie que j'ai obtenue était:
7.1.16
(c)
Comment puis-je obtenir uniquement 7.1.16?
... | head -1
ou il pourrait y avoir de meilleures façonsRéponses:
Sur mon système:
as
grep PHP
correspond à chaque chaîne PHP rencontrée.Le
^PHP
moyen "correspond uniquement à la chaîne 'PHP' lorsqu'elle se trouve au début d'une ligne".Évidemment, cela fonctionne si le format de sortie de
php -v
est cohérent entre les versions / builds.Pour référence, l'ensemble de la sortie était:
la source
En étendant la réponse de Jeff Schaller , sautez complètement le pipeline et demandez simplement la représentation constante interne:
Vous pouvez étendre ce modèle pour obtenir plus ou moins d'informations:
Voir la liste PHP des constantes prédéfinies pour tous les disponibles.
Le principal avantage: il ne repose pas sur un format de sortie défini de
php -v
. Étant donné qu'il s'agit des mêmes performances qu'une solution de pipeline, cela semble un choix plus robuste.Si votre objectif est de tester la version, vous pouvez également utiliser ce modèle. Par exemple, ce code se fermera
0
si PHP> = 7, et1
sinon:Pour référence, voici les horaires de divers cas de test, commandés en premier:
la source
php -v
Si vous avez installé php via le gestionnaire de paquets (par exemple RPM ou yum), vous pouvez alors interroger la version à partir de là:
Alternativement, vous pouvez demander à php de vous dire sa version directement :
la source
Il y a différentes façons, j'aime utiliser look behind:
ou
la source
.
La signification normale de 'serait inutile dans une classe de caractères, elle est donc déjà traitée comme littérale par défautDepuis vos débuts
awk
, voici uneawk
solution:la source
Ou
la source
awk '{print $2; exit}'
Si vous voulez le faire avec une seule fonction pipée, vous pouvez essayer d'utiliser sed comme ceci:
D'abord, il supprime toute ligne qui ne commence pas
PHP
, puis il coupe la version de cette ligne en supposant qu'il s'agit de la première séquence sous la forme dex.y.z
.Ou, si vous voulez quelque chose de plus proche de votre script d'origine, placez-le simplement
^
devant votre modèle grep pour ne rechercher que les lignes commençant par PHP:la source
Je pense que c'est une solution plus propre et élégante (devrait également fonctionner sous Windows):
La sortie serait comme
7.2.24
.la source
.PHP_MINOR_VERSION