Постоянная замена переменной в shell [duplicate]

На этот вопрос уже есть ответ здесь:

У меня есть файл , в котором я определил переменную Min_Inc=300000.

Затем я хочу получить ввод пользователя для изменения значения Min_Inc. Я выполнил следующие шаги.

  1. Прочитал значение с помощью echo $Min_Inc и отобразил его.
  2. Попросил пользователя ввести новое значение и считал его с помощью read New_Val.
  3. Попробовал заменить Min_Inc=300000 на Min_Inc=$New_Val, используя sed как sed 's/Min_Inc=300000/Min_Inc=$New_Val/'

Это дает сообщение об ошибке. Более того, я хочу сделать это изменение постоянным, что я могу сделать, перенаправив вывод в другой файл.

0
задан 21 June 2016 в 10:50

1 ответ

Переменные не расширены в одинарных кавычках. Любой необходимо использовать двойные кавычки:

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

Или повреждение кавычки для переменной:

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

Эти -i флаг записывает значение обратно в файл, можно даже сделать резервное копирование файла тем путем путем добавления строки к эти -i флаг. Например -i.bak создаст файл резервной копии с расширением .bak.

1
ответ дан 21 June 2016 в 20:50
  • 1
    Здорово! сделайте мне одолжение и примите ответ путем нажатия на галочку рядом с ответом. (I' ll также обновляют шаг 7, чтобы прояснить, что дублирующийся принтер исчезает). – PJ Singh 8 November 2017 в 07:08

Другие вопросы по тегам:

Похожие вопросы: