У меня есть конкретная строка в файле hosts, которая используется для моей локальной установки Wordpress Multisite, которая выглядит следующим образом:
127.0.0.1 localhost domain.dev site1.domain.dev site2.domain.dev
Я пишу сценарий оболочки, который могу запустить для создания нового отдельного сайта в моей мультисайтовой установке прямо из Терминала. Мне нужно иметь возможность добавлять новую запись в мой файл / etc / hosts всякий раз, когда я запускаю эту команду. В файле Shell я использую $site_addr
в качестве переменной для имени сайта. Затем вам нужно добавить .domain.dev в конец. Пример, который я сделал (который не сработал) с помощью sed:
sed -i'.bak' '7i7 $site_addr.domain.dev' /etc/hosts
Строка из моего файла hosts (см. Выше), которую мне нужно отредактировать, - это строка 7, следовательно, 7i7
в команде sed. Я хочу добавить новую запись в конец строки. Я также хочу создать резервную копию файла hosts на случай, если что-то пойдет не так.
Спасибо за любую помощь, ребята, надеюсь, я достаточно хорошо объяснил :)
1 ответ
Если это строка 7
sed -i '.bak' "7 s/$/ ${site_addr}.domain.dev/" /etc/hosts
Но вы можете использовать сопоставление с образцом (немного безопаснее) с
sed -i '.bak' "/127\.0\.0\.1/ s/$/ ${site_addr}.domain.dev/" /etc/hosts
Я рекомендую также сначала проверить, не находится ли домен еще в
${site_addr}.domain.dev
вместо переменной, которую я назначаю в Терминале с помощью команды read -p, например read -p "Enter site address: " site_addr
. Если я уберу круглые скобки ($site_addr.domain.dev
), он просто вставит их. Нужно ли экранировать переменную или что-то в этом роде?
Похожие вопросы
Новые вопросы
bash
Для вопросов о скриптах, написанных для командной оболочки Bash. Для сценариев оболочки с ошибками / синтаксическими ошибками, пожалуйста, проверьте их с помощью программы shellcheck (или на сервере веб-проверки оболочки по адресу https://shellcheck.net) перед размещением здесь. Вопросы об интерактивном использовании Bash, скорее всего, будут касаться темы Super User, а не переполнения стека.