AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 471521
Accepted
The One
The One
Asked: 2018-09-27 00:41:48 +0800 CST2018-09-27 00:41:48 +0800 CST 2018-09-27 00:41:48 +0800 CST

Como obter apenas o número da versão do PHP usando comandos do shell?

  • 772

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?

php version
  • 9 9 respostas
  • 7329 Views

9 respostas

  • Voted
  1. bishop
    2018-09-27T05:33:49+08:002018-09-27T05:33:49+08:00

    Estendendo a resposta de Jeff Schaller , pule o pipeline completamente e apenas peça a representação interna constante:

    $ php -r 'echo PHP_VERSION;'
    7.1.15
    

    Você pode estender esse padrão para obter mais ou menos informações:

    $ php -r 'echo PHP_MAJOR_VERSION;'
    7
    

    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á 0se PHP >= 7, 1caso contrário:

    php -r 'exit((int)version_compare(PHP_VERSION, "7.0.0", "<"));'
    

    Para referência, aqui estão os tempos para vários casos de teste, ordenados mais rápido primeiro:

    $ 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
    
    • 147
  2. Jeff Schaller
    2018-09-27T04:36:50+08:002018-09-27T04:36:50+08:00

    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á:

    rpm -q --queryformat="%{VERSION}" php
    

    Alternativamente, você pode pedir ao php para informar sua versão diretamente :

    php -r 'echo phpversion();'
    
    • 21
  3. Best Answer
    Daniele Santi
    2018-09-27T00:59:03+08:002018-09-27T00:59:03+08:00

    No meu sistema:

    $> php -v | grep ^PHP | cut -d' ' -f2
    7.0.32-0ubuntu0.16.04.1
    

    as grep PHPcorresponde a cada string PHP que encontra.

    Os ^PHPmeios "combinam apenas a string 'PHP' quando está no início de uma linha".

    Obviamente, isso funciona se o formato de saída php -vfor consistente entre as versões/compilações.

    Para referência, toda a saída foi:

    PHP 7.0.32-0ubuntu0.16.04.1 (cli) ( NTS )
    Copyright (c) 1997-2017 The PHP Group
    Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
        with Zend OPcache v7.0.32-0ubuntu0.16.04.1, Copyright (c) 1999-2017, by Zend Technologies
    
    • 15
  4. Ravexina
    2018-09-27T01:06:32+08:002018-09-27T01:06:32+08:00

    Existem diferentes maneiras, eu gosto de usar look behind:

    php -v | grep -Po '(?<=^PHP )[^ ]+'
    

    ou

    php -v | grep -Po '(?<=PHP )([0-9.]+)'
    
    • 6
  5. terdon
    2018-09-27T07:07:25+08:002018-09-27T07:07:25+08:00

    Desde que você começou com awk, aqui está uma awksolução:

    $ php -v | awk '/^PHP/{print $2}'
    7.2.10
    
    • 5
  6. user88036
    2018-09-27T09:47:44+08:002018-09-27T09:47:44+08:00
    php -v | awk NR==1'{print $2}'
    

    Ou

    php -v | awk '{print $2; exit}'
    
    • 2
  7. Christian Gibbons
    2018-09-27T08:40:08+08:002018-09-27T08:40:08+08:00

    Se você quiser fazer isso com apenas uma única função sendo canalizada, tente usar sed assim:

    php -v | sed -e '/^PHP/!d' -e 's/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\).*$/\1/'
    

    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 de x.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:

    php -v | grep ^PHP | awk '{print $2}'
    
    • 0
  8. Max_Payne
    2020-01-09T09:19:46+08:002020-01-09T09:19:46+08:00

    Acho que esta é uma solução mais limpa e elegante (também deve funcionar no Windows):

    php -r "echo PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION.'.'.PHP_RELEASE_VERSION;"
    

    A saída seria como 7.2.24.

    • 0
  9. Sanjay
    2020-03-28T01:14:21+08:002020-03-28T01:14:21+08:00
    php -v | grep ^PHP | awk '{print $1, $2}'
    

    A saída será PHP 7.1.7

    Testado no Ubuntu 18.04LTS

    • 0

relate perguntas

  • Encurtando a operação de instalação do WP-CLI [fechado]

  • Configuração php-fpm independente da versão Nginx

  • PHP em um servidor web apache embutido construído com buildroot

  • Extensões PHP no centos7 php7.x

  • como importar clientes para dolibarr

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve