Substituindo permanentemente uma variável no shell [duplicado]

0

Eu tenho o arquivo <temp_test.sh> no qual eu defini uma variável Min_Inc=300000 .

Eu, então, quero receber a entrada do usuário para alterar o valor de Min_Inc . Eu segui estes passos.

  1. Leia o valor usando echo $Min_Inc e exiba-o.
  2. Procurou a entrada do usuário para o novo valor e leu com read New_Val .
  3. Tentei substituir Min_Inc=300000 por Min_Inc=$New_Val usando sed as sed 's/Min_Inc=300000/Min_Inc=$New_Val/'

Isto dá uma mensagem de erro. Além disso, quero tornar essa alteração permanente, o que posso fazer redirecionando a saída para outro arquivo.

    
por Ashok 21.06.2016 / 08:19

1 resposta

1

As variáveis não são expandidas entre aspas simples. Você precisa usar aspas duplas:

sed -i "s/Min_Inc=300000/Min_Inc=$New_Val/" /path/file-name

Ou quebre as aspas da variável:

sed -i 's/Min_Inc=300000/Min_Inc='$New_Val'/' /path/file-name

O sinalizador -i grava o valor de volta no arquivo, você pode até fazer um backup do arquivo dessa forma adicionando uma string ao sinalizador -i . Por exemplo, -i.bak criará um arquivo de backup com a extensão .bak .

    
por Videonauth 21.06.2016 / 08:34