У меня есть сценарий оболочки, который разбивается на пробел на линии 42 между Virtualhost и *. В результате, единственное, что echo'd утешать являетсяПочему мой скрипт bash разбивается на пустое пространство?
<VirtualHost
То, что я хочу, чтобы это произошло для всей моей струна быть echo'd на консоль.
<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>
Вот мой скрипт для справки:
#!/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
И для дальнейшего чтения, [вики Грега] (http://mywiki.wooledge.org/Quotes) и [руководство] (http://tldp.org/LDP/abs /html/quotingvar.html). Кроме того, рассмотрите возможность использования ['printf'] (http://www.freebsd.org/cgi/man.cgi?query=printf&sektion=1). – Graham