Задать вопрос
serii81
@serii81
Я люблю phр...

Как в bash добавить строку в конце файла но перед определенной строке?

Всем привет.
Я хочу написать функцию для сайтов на wordpress, которая создаст директорию и файл, а потом автоматически пропишет импорт в главном файле.
Структура проекта
$ tree
.
├── front-page.php
├── src
│   └── scss
│       ├── blocks
│       └── my.scss
└── template-parts
    └── home
        └── home-intro.php

Главный файл front-page.php
<?php get_header(); ?>
<?php get_footer(); ?>


Функция mfkilephp создаст файл home-intro.php и подключит в front-page.php

function mkfilephp() { 
    mkdir -p  "$1" && touch  "$1"/"$2.php" && echo "echo get_template_part('template-parts/$1/$2')" >> front-page.php
}


Проблема в том, что нужно вставить перед строкой get_footer
  • Вопрос задан
  • 541 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 2
xotkot
@xotkot
хорошо есть и хорошо весьма
если упростить, то нужно перед одной строкой вставить другую
если делать через sed то
STR1="echo get_template_part('template-parts/$1/$2')"
STR2="<?php get_footer(); ?>"
sed -i "/$STR2/i $STR1" FILE
Ответ написан
да тут батенька не все так просто, тебе нужно сделать проверку. не добавлен ли он уже в файл, ты же не хочеш плодить дубли. И только после этого добавлять.
вставить ПЕРЕД найденым можно через sed.
Вот так
https://sed.js.org/index.html?snippet=Gz6gka
А блин да
sed -e '0,/get_footer/s#.*get_footer.*#вставляемый текст\n&#' /var/www/site.ru/index.php

Но лучше сделай еще проверку хотябы так
grep "тут твоя строка которую нужно добавить" /var/www/site.ru/index.php ||  sed -e '0,/get_footer/s#.*get_footer.*#вставляемый текст\n&#' /var/www/site.ru/index.php

|| -false ( в твоем случае строку не нашел)
&& -true
Если все норм то
-e меняеш на -i
тогда это будет не вывод на экран а уже сохранит в файл.

ps
если у вас пхп не проще сделать это на нем ?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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