Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I have a script that adds a new user and creates a virtual host for the users domain name. The script works great with one exception... in /etc/apache2/sites-available/ all of my virtual host files have two copies, one with an e and one without.

I believe my issue lies when I use the SED command. Can I get a second opinion?

Here is the script:

# 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.."
share|improve this question
3  
Sorry, after typing that I realized my mistake, when using the SED command I had the -i option to edit the file "inline" without creating the copy. For some reason I added the e command as well, which is supposed to add the script. I changed the -ie to -i and the script works as needed. I cannot answer my own question yet so I added a comment. –  jason.dot.h Jul 4 '11 at 17:44
add comment

1 Answer

up vote 3 down vote accepted

You need separate -i and -e arguments to sed. -ie is telling sed to create a backup file with an 'e' appended.

To fix, just replace the sed invocation above to:

sudo sed -i -e "s/NEWUSERNAME/$username/" /etc/apache2/sites-available/$newdomain
share|improve this answer
    
Although you've got a comment with this, I've adding the details as an answer for completeness. –  Jeremy Kerr Jul 5 '11 at 2:40
    
Thanks Jeremy, I appreciate it! –  jason.dot.h Jul 6 '11 at 4:07
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.