Я пытался написать простой скрипт bash, который я буду использовать для установки приложения и обновления его конфигурационного файла. Я испытываю трудности с тем, чтобы изменить его конфигурационный файл.
# DBHost=localhost
DBName=test
# DBPassword=
Любые предложения, как я могу изменить выше, как показано ниже?
DBHost=localhost
DBName=database
DBPassword=password
bash
shell-script
text-processing
configuration
compixtr
источник
источник
Ответы:
Лучший способ зависит от того, ожидаете ли вы, что файл также будет изменен людьми, насколько сложен файл, и хотите ли вы, чтобы ваш сценарий имел приоритет, если он выглядит так, как будто кто-то другой хочет другое значение. То есть, если файл уже содержит
DBPassword=swordfish
, хотите ли вы сохранить его или заменить наDBPassword=password
?Обычный способ справиться с этим - иметь раздел файла, разделенный «волшебными комментариями», и редактировать только часть между этими комментариями. Вот способ сделать это с помощью awk. Если волшебные комментарии отсутствуют, новый раздел добавляется в конец файла. Предупреждение: непроверенный код.
Этот подход не работает, если программа, которая читает файл конфигурации, не поддерживает несколько строк, устанавливающих один и тот же элемент конфигурации. В этом случае вам действительно нужно удалить старые. В этом случае я бы посоветовал оставить комментарии нетронутыми и добавить свои настройки в конце.
источник
Если это все, что вам нужно, вы можете сделать что-то вроде
Это будет копировать оригинал ,
config.file
чтобыconfig.file.bak
и внести необходимые изменения.источник
Я пойду с «экс» в беззвучном режиме:
Команда Тердона
sed
компактна и эффективна. Но взаимодействие «здесь документа», полного ex-команд и интерполяции строк оболочки, может быть мощным. Например, пароль может быть заменен значением переменной оболочки:Если вы используете
vi
илиvim
и вы знакомы с режимом «:», добавление новых / улучшенных / различных правок также довольно просто.источник