我正在尝试创建一个简单的脚本,该脚本将/etc/apache2/sites-available
使用 for 循环在目录中生成文件,并使用我的脚本中的模板让它执行此操作。这是我的脚本片段的样子:
cat <<EOF > /etc/apache2/sites-available/${VHOST}.com.conf
<VirtualHost *:80>
ServerName ${VHOST}.com
ServerAlias www.${VHOST}.com
ServerAdmin [email protected]
DocumentRoot /var/www/${VHOST}.com
ErrorLog ${APACHE_LOG_DIR}/${VHOST}_error.log
CustomLog ${APACHE_LOG_DIR}/${VHOST}_access.log combined
Options -Indexes
</VirtualHost>
EOF
注意: ${VHOST} 只是我的 for 循环中指定的一个值。
我试图实现的结果是将模板输出发送到${VHOST}.com.conf
站点可用目录中的文件。
我上面的代码段不起作用,我收到以下错误:
./vhost.sh: line 21: warning: here-document at line 6 delimited by end-of-file (wanted `EOF')
./vhost.sh: line 21: syntax error near unexpected token `newline'
./vhost.sh: line 21: `<<-EOF <VirtualHost *:80>'
更新:
我按照@PerlDuck 的建议更新文件如下
cat > /etc/apache2/sites-available/${VHOST}.com.conf <<-EOF
<VirtualHost *:80>
ServerName ${VHOST}.com
ServerAlias www.${VHOST}.com
ServerAdmin [email protected]
DocumentRoot /var/www/${VHOST}.com
ErrorLog ${APACHE_LOG_DIR}/${VHOST}_error.log
CustomLog ${APACHE_LOG_DIR}/${VHOST}_access.log combined
Options -Indexes
</VirtualHost>
尝试cat > /etc/apache2/sites-available/${VHOST}.com.conf <<- "EOF"
也没有成功。两者都产生相同的错误。
./vhost.sh: line 22: warning: here-document at line 6 delimited by end-of-file (wanted `EOF')
./vhost.sh: line 23: syntax error: unexpected end of file
@PerlDuck 为我解决了我的问题。这只是一个不需要的空白空间的情况。最终 EOF 之后的这个额外的空格会阻止heredoc 终止。从而产生错误
记住孩子!空格,空格,空格!