出了什么问题?“语法错误:文件意外结束”

出了什么问题?“语法错误:文件意外结束”

我一直收到这个错误,你们知道哪里出了问题吗?

rapache是 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

答案1

由于终止符不在行首,因此您的 heredoc 永远不会结束。

答案2

someFile <<EOF
...
EOF

作品


    someFile <<EOF
    ...
    EOF

不管用


    someFile <<-EOF
    ...
    EOF

作品


看 '男子猛击' 和Bash 参考手册,“3.6.6 此处文档”部分详细信息请<<-EOF参见。请注意,heredoc 终止符的缩进必须使用制表符而不是空格来完成。

相关内容