sed php.ini memory_limit

5

O seguinte funciona muito bem:

phpmemory_limit=256M #or what ever you want it set to
sed -i 's/memory_limit = 16M/memory_limit = '${phpmemory_limit}'/' /etc/php5/apache2/php.ini

Se o memory_limit estiver configurado para 16M, mas descobri que em algumas distribuições ele não é padronizado para 16M, mas, em vez disso, será padronizado para 32M. Então, minha pergunta é como eu tenho uma conta no SED para isso e substituir qualquer que seja o número para $ {phpmemory_limit}?

    
por BassKozz 21.12.2009 / 17:26

2 respostas

8

você pode usar regexp - por exemplo:

phpmemory_limit=256M #or what ever you want it set to
sed -i 's/memory_limit = .*/memory_limit = '${phpmemory_limit}'/' /etc/php5/apache2/php.ini
    
por 21.12.2009 / 17:35
1

Supondo que:

  • Os valores sempre serão especificados em Mb.
  • Você deseja preservar os comentários finais.
  • Você não deseja modificar nenhuma ocorrência comentada.
  • phpmemory_limit contém apenas um número inteiro.

    sed -ri 's/^(memory_limit = )[0-9]+(M.*)$/'${phpmemory_limit}'/' /etc/php5/apache2/php.ini
    

Isso usa ..

  • Backreferences para encurtar o regex e preservar o comentário.
  • sed s suporte estendido de regex.
  • É importante que as opções abreviadas sejam especificadas nessa ordem, caso contrário, será criado um backup com a extensão de arquivo r .
por 21.12.2009 / 17:33