I have a shell script that is breaking on a space on line 42 between Virtualhost and the *. As a result, the only thing that is echo'd to console is
<VirtualHost
What I want to happen is for my entire string to be echo'd to the console.
<VirtualHost *:80> DocumentRoot /Applications/MAMP/htdocs/web ServerName web.localhost <Directory /Applications/MAMP/htdocs/web> Options Indexes FollowSymLinks MultiViews +Includes AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost>
Here is my script for reference:
#!/bin/bash # This script should be used to automate the web site installation checkFileForString () { # $1 = file # $2 = regex # $3 = text to be added declare file=$1 declare regex=$2 declare file_content=$( cat "${file}" ) if [[ ! " $file_content " =~ $regex ]]; then echo "$3" #>> $file else replaceStringInFile $file $regex $3 fi } replaceStringInFile () { # $1 = file # $2 = old string # $3 = new string sed -i -e 's|${2}|${3}|' $1 } createFile () { # $1 = file declare fileToCheck=$1 if [ ! -f $fileToCheck ]; then touch $fileToCheck fi } # Add vhosts to httpd-vhosts.conf echo "Adding vhosts to httpd-vhosts.conf" currentFile="/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf" currentRegex="<VirtualHost\s[*]:80>\s+DocumentRoot\s/Applications/MAMP/htdocs/web\s+ServerName\sweb.localhost" newText="<VirtualHost *:80> DocumentRoot /Applications/MAMP/htdocs/web ServerName web.localhost <Directory /Applications/MAMP/htdocs/web> Options Indexes FollowSymLinks MultiViews +Includes AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> " checkFileForString $currentFile $currentRegex $newText