Estendendo la risposta di Jeff Schaller , salta del tutto la pipeline e chiedi semplicemente la rappresentazione interna costante:
$ php -r 'echo PHP_VERSION;'
7.1.15
È possibile estendere questo modello per ottenere più o meno informazioni:
$ php -r 'echo PHP_MAJOR_VERSION;'
7
Vedi l' elenco PHP delle costanti predefinite per tutte le disponibili.
Il vantaggio principale: non si basa su un formato di output definito di php -v
. Dato che si tratta delle stesse prestazioni di una soluzione pipeline, allora sembra una scelta più solida.
Se il tuo obiettivo è testare la versione, puoi anche utilizzare questo modello. Ad esempio, questo codice verrà chiuso 0
se PHP> = 7, e 1
altrimenti:
php -r 'exit((int)version_compare(PHP_VERSION, "7.0.0", "<"));'
Per riferimento, ecco i tempi per vari casi di test, ordinati prima per primi:
$ time for (( i=0; i<1000; i++ )); do php -v | awk '/^PHP [0-9]/ { print $2; }' >/dev/null; done
real 0m13.368s
user 0m8.064s
sys 0m4.036s
$ time for (( i=0; i<1000; i++ )); do php -r 'echo PHP_VERSION;' >/dev/null; done
real 0m13.624s
user 0m8.408s
sys 0m3.836s
$ time for (( i=0; i<1000; i++ )); do php -v | head -1 | cut -f2 -d' ' >/dev/null; done
real 0m13.942s
user 0m8.180s
sys 0m4.160s
... | head -1
o potrebbero esserci modi migliori