На этот вопрос уже есть ответ здесь:
У меня есть файл
, в котором я определил переменную Min_Inc=300000
.
Затем я хочу получить ввод пользователя для изменения значения Min_Inc
. Я выполнил следующие шаги.
echo $Min_Inc
и отобразил его. read New_Val
. Min_Inc=300000
на Min_Inc=$New_Val
, используя sed
как sed 's/Min_Inc=300000/Min_Inc=$New_Val/'
Это дает сообщение об ошибке. Более того, я хочу сделать это изменение постоянным, что я могу сделать, перенаправив вывод в другой файл.
Переменные не расширены в одинарных кавычках. Любой необходимо использовать двойные кавычки:
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
.