用于在Mac OSX 10.6中将新行附加到etc/hosts和Apache httpd-vhosts.conf的Shell脚本

Pat*_*ick 4 apache macos shell terminal virtual-hosts

我正在使用Mac OSX 10.6并在其上进行Web开发.我对编写shell脚本知之甚少,但我还没有真正精通它们.

我想要做的是编写一个shell脚本,只需要一个本地站点别名和文档目录,然后它就会在新行上将新别名附加到主机上,例如"127.0.0.1 mysite.local"在etc/hosts的底部.

然后该脚本将附加Apache的httpd-vhosts.conf文件,如下所示:

<VirtualHost *:80>
    DocumentRoot "/Repositories/myproject/mysite.com/trunk/htdocs"
    ServerName mysite.local
    ServerAlias mysite.localhost
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

然后它最终会运行命令来重启我的Apache服务器.现在我知道重启Apache的终端命令,这很简单.我也知道如何从运行脚本的用户读取站点名称和路径.如下:

#!/bin/bash
read -p "New local site name: " site
read -p "Site path (ex:/Repositories/myproject/mysite.com/trunk/htdocs): " sitepath
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做是将文本附加到终端的文件中.

任何想法或有用的想法?

谢谢,帕特里克

小智 9

未经测试,但它应该工作:

#!/bin/bash
read -p "New local site name: " SITE
read -p "Site path (ex:/Repositories/myproject/mysite.com/trunk/htdocs): " SITEPATH

#/etc/hosts
cp /etc/hosts /etc/hosts.original
echo -e "127.0.0.1\t${SITE}.local" >> /etc/hosts

#httpd-vhosts.conf
VHOSTSFILE="/etc/apache2/httpd-vhosts.conf"
cp $VHOSTSFILE ${VHOSTSFILE}.original
echo "<VirtualHost *:80>" >> $VHOSTSFILE
echo -e "\tDocumentRoot \"${SITEPATH}\"" >> $VHOSTSFILE
echo -e "\tServerName ${SITE}.local" >> $VHOSTSFILE
echo -e "\tServerAlias ${SITE}.localhost" >> $VHOSTSFILE
echo '</VirtualHost>' >> $VHOSTSFILE

#restart apache
Run Code Online (Sandbox Code Playgroud)

>>将输出重定向到给定文件,将内容附加到文件.我也使用-e允许\t扩展为制表符.

请注意,您需要运行此脚本sudo.我还包括在修改原始文件之前备份原始文件的命令,以防万一.