Atualizando arquivos de configuração dentro do script que os referencia?

2

Não tenho problemas para adicionar arquivos de configuração a um determinado script, mas atualizá-los automaticamente é outra questão. Neste exemplo, estou fornecendo algumas variáveis para um script e gostaria que o script pudesse alterar os valores fornecidos pelo arquivo de configuração. Existe uma maneira padrão de alterar o valor de uma variável em um script em execução e, em seguida, atualizar o arquivo de configuração de acordo? Minha abordagem atual é seduzir pela linha que contém a variável e alterar seu conteúdo, mas sinto que deve haver uma maneira melhor.

Por exemplo, imagine um programa que gere algum arquivo de texto arbitrário:
Linha no arquivo de configuração, definindo uma variável disponível para o programa:

EXIT_ON_GEN="true" //exit on successful generation of text file if true

O usuário seleciona uma opção de menu que indica que gostaria de permanecer no programa, porque gosta de gerar tanto texto arbitrário. Seria fácil simplesmente defini-lo como false para a instância atual do programa, mas qual é a melhor maneira de alterar o próprio arquivo de configuração, para que o usuário não precise voltar e alterar as configurações toda vez que ele for executado?

    
por user67459 18.03.2015 / 20:41

1 resposta

2

Usando sed

Começando com este arquivo:

$ cat >file
EXIT_ON_GEN="true" //exit on successful generation of text file if true

Um método para alterar true para false (e exibir a nova versão no terminal) usaria sed:

$ sed 's/^EXIT_ON_GEN=[^[:space:]]*/EXIT_ON_GEN="false"/' file
EXIT_ON_GEN="false" //exit on successful generation of text file if true

Para fazer a alteração no arquivo, use a opção -i :

$ sed -i 's/^EXIT_ON_GEN=[^[:space:]]*/EXIT_ON_GEN="false"/' file

Usando awk

$ awk -F'"' -v OFS='"' '/^EXIT_ON_GEN/{$2="false"} 1' file
EXIT_ON_GEN="false" //exit on successful generation of text file if true
    
por 19.03.2015 / 02:05