Lo script che utilizza sed aggiunge una "e" ai file di output


18

Ho uno script che aggiunge un nuovo utente e crea un host virtuale per il nome di dominio degli utenti. Lo script funziona alla grande con un'eccezione ... in / etc / apache2 / siti-disponibili / tutti i miei file host virtuali hanno due copie, una con e e una senza.

Credo che il mio problema risieda quando uso il comando SED. Posso avere una seconda opinione?

Ecco la sceneggiatura:

# 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
Scusa, dopo aver digitato che ho capito il mio errore, quando ho usato il comando SED ho avuto l'opzione -i per modificare il file "inline" senza creare la copia. Per qualche ragione ho aggiunto anche il comando e, che dovrebbe aggiungere lo script. Ho cambiato -ie in -i e lo script funziona secondo necessità. Non posso ancora rispondere alla mia domanda, quindi ho aggiunto un commento.
jason.dot.h,

Risposte:


17

Hai bisogno di cose separate -ie -eargomenti per sed. -iesta dicendo a sed di creare un file di backup con una "e" aggiunta.

inserimento manuale per <code> -i </code>

Per risolvere, basta sostituire l'invocazione sed qui sopra a:

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

Anche se hai un commento con questo, ho aggiunto i dettagli come risposta per completezza.
Jeremy Kerr,

Quando ho letto per la prima volta questa risposta ho capito cosa stava dicendo, ma non ho capito immediatamente perché la e fosse presa come suffisso. Ho quindi controllato la pagina del manuale e ho realizzato che ho preso un argomento opzionale. Rende questa risposta ovvia in retrospettiva ma mi ci è voluto un secondo per capire il perché (quindi l'immagine aggiunge).
Chris Schmitz l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.