3

I keep getting this error, do you guys know what is wrong?

rapache is an alias for restart apache

mugbear:/usr/bin# cat /usr/bin/mkdomain                                         
if [ -d "/srv/www/$1" ]; then
        echo "Domain $1 already exists!"
else
        mkdir -p /srv/www/$1/public_html
        mkdir -p /srv/www/$1/logs
        cat >> /etc/apache2/sites-available/"$1" << EOF
        <VirtualHost removed:80>
                ServerAdmin support@$1
                ServerName $1
                ServerAlias www.$1
                        DocumentRoot /srv/www/$1/public_html/
                ErrorLog /srv/www/$1/logs/error.log
                CustomLog /srv/www/$1/logs/access.log combined
        </VirtualHost>
        EOF
        a2ensite $1
    rapache
fi
mugbear:/usr/bin# mkdomain test.com                                        
/usr/bin/mkdomain: line 19: syntax error: unexpected end of file

2 Answers 2

3

Your heredoc never ends since the terminator is not at the beginning of the line.

4
  • I don't see a terminator in the other answer: serverfault.com/questions/196557/… Could you show me me an example? Also, I cannot seem to find a manual on EOF.
    – Strawberry
    Oct 31, 2010 at 5:33
  • 1
    The EOF must be the only thing on the line. No spaces before, and none after. And you want to find a manual for <<, not EOF. Oct 31, 2010 at 5:35
  • Ahh. I see, it looks weird without the indentation, but it works. Thakns!
    – Strawberry
    Oct 31, 2010 at 5:38
  • Generally heredocs are not indented. It's understood that they're not really part of the script. Oct 31, 2010 at 5:40
3
someFile <<EOF
...
EOF

works


    someFile <<EOF
    ...
    EOF

will not work


    someFile <<-EOF
    ...
    EOF

works


See 'man bash' and the Bash Reference Manual, section "3.6.6 Here Documents" for details on <<-EOF. Note that the indentation of the heredoc terminator must be done using tabs, not spaces.

2

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .