使用Makefile将多行文本保存到文件

使用Makefile将多行文本保存到文件,makefile,apache2,gnu-make,Makefile,Apache2,Gnu Make,我想用GNU Make(Makefile)将多行文本保存到一个文件中。但它给了我错误。我想用这个脚本创建一个虚拟主机配置文件$$dir将是用户给定的名称。请帮助我 define info = echo <VirtualHost *:80> echo ServerAdmin webmaster@localhost echo ServerName $$dir.io echo ServerAlias ww

我想用GNU Make(Makefile)将多行文本保存到一个文件中。但它给了我错误。我想用这个脚本创建一个虚拟主机配置文件$$dir将是用户给定的名称。请帮助我

define info =
        echo <VirtualHost *:80>
        echo    ServerAdmin webmaster@localhost
        echo    ServerName  $$dir.io
         echo    ServerAlias www.$$dir.io
         echo    DocumentRoot /var/www/$$dir/public_html
         echo    <Directory /var/www/$$dir/public_html/>
         echo        Options Indexes FollowSymLinks MultiViews
         echo        AllowOverride All
         echo        Order allow,deny
         echo        allow from all
         echo    </Directory>
         echo </VirtualHost>
      endef

  echo $$info > /etc/apache2/sites-avaliable/$$dir.; \
  echo "Done"
定义信息=
回音
echo服务器管理员webmaster@localhost
echo服务器名$$dir.io
echo服务器别名www.$$dir.io
echo DocumentRoot/var/www/$$dir/public\u html
回音
回显选项索引跟随符号链接多视图
echo AllowOverride All
回音命令允许,拒绝
回音
回音
回音
恩德夫
echo$$info>/etc/apache2/sites available/$$dir\
回音“完成”

这个例子太离谱了,我想知道你是不是曾经尝试过这样做,或者你只是在一个StackOverflow问题中直接输入了一个“最佳猜测”

info = \
    echo '<VirtualHost *:80>'; \
    echo '   ServerAdmin webmaster@localhost'; \
    echo '   ServerName  $$dir.io'; \
    echo '   ServerAlias www.$$dir.io'; \
    echo '   DocumentRoot /var/www/$$dir/public_html'; \
    echo '   <Directory /var/www/$$dir/public_html/>'; \
    echo '       Options Indexes FollowSymLinks MultiViews'; \
    echo '       AllowOverride All'; \
    echo '       Order allow,deny'; \
    echo '       allow from all'; \
    echo '   </Directory>'; \
    echo '</VirtualHost>';

all:
        ( $(info) ) > /etc/apache2/sites-avaliable/$(dir); \
        echo "Done"
info=\
回声'\
echo服务器管理员webmaster@localhost'; \
echo'ServerName$$dir.io'\
echo“ServerAlias www.$$dir.io”\
echo'DocumentRoot/var/www/$$dir/public_html'\
回声'\
echo“选项索引跟随符号链接多视图”\
回音“允许超越一切”\
回音“命令允许,拒绝”\
回音“允许来自所有人”\
回声'\
回声';
全部:
($(info))>/etc/apache2/sites available/$(dir)\
回音“完成”

您没有确切指定“由用户提供”的含义(在make命令行上?在环境中?在makefile的其他地方?)。

我想通过cli从用户处获取主机名。谢谢你的回答。这只是一个片段或代码。我的脚本文件太长,无法使用其他功能。所以我只发布了我遇到的问题。