Сценарій за допомогою sed додає "e" до вихідних файлів


18

У мене є сценарій, який додає нового користувача і створює віртуальний хост для доменного імені користувачів. Сценарій чудово працює за одним винятком ... in / etc / apache2 / available-sites / всі мої віртуальні хост-файли мають дві копії, одна з e та одна без.

Я вважаю, що моя проблема полягає в тому, коли я використовую команду SED. Чи можу я отримати другу думку?

Ось сценарій:

# set the working directory
dir=$(pwd)

# request the new domain name
printf "Enter the new domain name, without the www (i.e newdomain.com):\n"
read newdomain

# request the new username
printf "Enter the new username (i.e newusername):\n"
read username

# create the new user
sudo adduser $username

# copy the virtual host to sites-available
sudo cp /templates/domain-vhost /etc/apache2/sites-available/$newdomain

# echo results
echo "Successfully created the virtual host file at: /etc/apache2/sites-available/$newdomain.."

# change the domain name in the virtual host file
sudo sed -ie "s/NEWDOMAINNAME/$newdomain/" /etc/apache2/sites-available/$newdomain

# echo results
echo "Modified the virtual host to reflect the new domain: $newdomain.."

# change the directory path in the virtual host
sudo sed -ie "s/NEWUSERNAME/$username/" /etc/apache2/sites-available/$newdomain

# echo results
echo "Successfully modified the new virtual host file.."

# enable the site with apache
cd /etc/apache2/sites-available/
sudo a2ensite $newdomain

# echo results
echo "Successfully enabled the $newdomain.."

# change to previous working directory
cd $dir

# reload apache
sudo /etc/init.d/apache2 reload

# notify user of action
echo "Finished creating the new domain, $newdomain, and restarted Apache.."

3
Вибачте, після введення, що я зрозумів свою помилку, при використанні команди SED у мене була можливість -i редагувати файл "inline" без створення копії. Я чомусь також додав команду e, яка повинна додати сценарій. Я змінив -ie на -i, і сценарій працює за потребою. Я ще не можу відповісти на власне запитання, тому я додав коментар.
jason.dot.h

Відповіді:


17

Вам потрібні окремі -iта -eаргументи, щоб sed. -ieповідомляє sed створити файл резервної копії з доданим 'e'.

ручний запис для <code> -i </code>

Щоб виправити, просто замініть виклик sed на:

sudo sed -i -e "s/NEWUSERNAME/$username/" /etc/apache2/sites-available/$newdomain

Хоча у вас є коментар до цього, я додаю деталі як відповідь на повноту.
Джеремі Керр

Коли я вперше прочитав цю відповідь, я зрозумів, про що йдеться, але не одразу зрозумів, чому е вважається суфіксом. Потім я перевірив сторінку керівництва і зрозумів, що я приймає необов’язковий аргумент. Це робить цю відповідь очевидною в ретроспективі, але мені знадобилося секунду, щоб зрозуміти, чому (отже, зображення додається).
Кріс Шмітц
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.