Ich möchte nur die Version von PHP auf CentOS installiert bekommen.
Ausgabe von 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
Ich habe folgendes versucht:
php -v | grep PHP | awk '{print $2}'
Aber die Ausgabe, die ich bekam, war:
7.1.16
(c)
Wie kann ich nur 7.1.16 bekommen?
... | head -1
oder es könnte bessere Möglichkeiten gebenAntworten:
Auf meinem System:
wie
grep PHP
passt jeder PHP - String es trifft.Das
^PHP
bedeutet "Nur mit der Zeichenfolge 'PHP' übereinstimmen, wenn sie am Anfang einer Zeile steht".Dies funktioniert natürlich, wenn das Ausgabeformat von
php -v
über Versionen / Builds hinweg konsistent ist.Als Referenz war die gesamte Ausgabe:
quelle
Um die Antwort von Jeff Schaller zu erweitern , überspringen Sie die gesamte Pipeline und fragen Sie nach der internen konstanten Darstellung:
Sie können dieses Muster erweitern, um mehr oder weniger Informationen zu erhalten:
In der PHP-Liste der vordefinierten Konstanten finden Sie alle verfügbaren Konstanten .
Der große Vorteil: Es kommt nicht auf ein definiertes Ausgabeformat von an
php -v
. Da es ungefähr die gleiche Leistung wie eine Pipeline-Lösung hat, scheint es eine robustere Wahl zu sein.Wenn Sie die Version testen möchten, können Sie auch dieses Muster verwenden. Dieser Code wird beispielsweise beendet,
0
wenn PHP> = 7 ist, und1
ansonsten:Als Referenz finden Sie hier die Timings für verschiedene Testfälle, die am schnellsten sortiert sind:
quelle
php -v
Wenn Sie PHP über den Paketmanager installiert haben (zB RPM oder yum), können Sie die Version von dort aus abfragen:
Alternativ können Sie php bitten , Ihnen die Version direkt mitzuteilen :
quelle
Es gibt verschiedene Möglichkeiten, die ich gerne benutze, um nach hinten zu schauen:
oder
quelle
.
Die normale Bedeutung von 's wäre in einer Zeichenklasse nutzlos, daher wird sie bereits standardmäßig als wörtlich behandeltawk
Hier ist eineawk
Lösung, mit der Sie angefangen haben :quelle
Oder
quelle
awk '{print $2; exit}'
Wenn Sie dies mit nur einer Funktion tun möchten, die weitergeleitet wird, können Sie sed folgendermaßen verwenden:
Zuerst werden alle Zeilen gelöscht, die nicht mit "" beginnen
PHP
. Anschließend wird die Version aus dieser Zeile ausgeschnitten, sofern es sich um die erste Sequenz in Form von "" handeltx.y.z
.Oder, wenn Sie Ihrem ursprünglichen Skript etwas näher kommen möchten, setzen Sie es einfach
^
vor Ihr Grep-Muster, um nur nach Zeilen zu suchen, die mit PHP beginnen:quelle