Eu quero obter apenas a versão do php instalada no CentOS.
Saída dephp -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
Eu tentei isso a seguir:
php -v | grep PHP | awk '{print $2}'
Mas a saída que obtive foi:
7.1.16
(c)
Como posso obter apenas 7.1.16?
Estendendo a resposta de Jeff Schaller , pule o pipeline completamente e apenas peça a representação interna constante:
Você pode estender esse padrão para obter mais ou menos informações:
Veja a lista PHP de constantes pré-definidas para todas as disponíveis.
O principal benefício: não depende de um formato de saída definido de
php -v
. Dado que é quase o mesmo desempenho de uma solução de pipeline, parece uma escolha mais robusta.Se seu objetivo é testar a versão, você também pode usar esse padrão. Por exemplo, este código sairá
0
se PHP >= 7,1
caso contrário:Para referência, aqui estão os tempos para vários casos de teste, ordenados mais rápido primeiro:
Se você instalou o php através do gerenciador de pacotes (por exemplo, RPM ou yum), então você pode consultar a versão de lá:
Alternativamente, você pode pedir ao php para informar sua versão diretamente :
No meu sistema:
as
grep PHP
corresponde a cada string PHP que encontra.Os
^PHP
meios "combinam apenas a string 'PHP' quando está no início de uma linha".Obviamente, isso funciona se o formato de saída
php -v
for consistente entre as versões/compilações.Para referência, toda a saída foi:
Existem diferentes maneiras, eu gosto de usar look behind:
ou
Desde que você começou com
awk
, aqui está umaawk
solução:Ou
Se você quiser fazer isso com apenas uma única função sendo canalizada, tente usar sed assim:
Primeiro, ele exclui qualquer linha que não comece com
PHP
, depois recorta a versão dessa linha assumindo que é a primeira sequência na forma dex.y.z
.Ou, se você quiser algo mais próximo do seu script original, basta colocar
^
na frente do seu padrão grep para procurar apenas as linhas que começam com PHP:Acho que esta é uma solução mais limpa e elegante (também deve funcionar no Windows):
A saída seria como
7.2.24
.A saída será PHP 7.1.7
Testado no Ubuntu 18.04LTS