2011-05-06 77 views
4

我正在使用Mac OSX 10.6並在其上進行Web開發。我對編寫shell腳本知之甚少,但至今我還不是很瞭解它們。Shell腳本在Mac OSX中向etc/hosts和Apache httpd-vhosts.conf追加新行10.6

我想要做的是編寫一個shell腳本,它只需要一個本地站點別名和文檔目錄,然後它會將新別名添加到主機上,例如「127.0.0.1 mysite.local」在etc/hosts底部的新行上。

然後腳本將追加阿帕奇的httpd-vhosts.conf文件,像這樣:

<VirtualHost *:80> 
    DocumentRoot "/Repositories/myproject/mysite.com/trunk/htdocs" 
    ServerName mysite.local 
    ServerAlias mysite.localhost 
</VirtualHost> 

然後,它最終會運行命令重新啓動我的Apache服務器。現在我知道終端命令重新啓動Apache,這很簡單。我也知道如何讀取運行腳本的用戶的站點名稱和路徑。如下:

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

我不知道該怎麼做是從終端追加文本到文件。

任何想法或有幫助的想法?

感謝, 帕特里克

回答

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 

>>將輸出重定向到指定的文件,附加內容的文件。我還使用-e來允許\t擴展爲製表符。

請注意,您需要使用sudo運行此腳本。爲了以防萬一,我還包括了在修改它們之前備份原始文件的命令。

+0

謝謝你,完全有效。我非常感謝幫助。我必須做的唯一更改是httpd-vhosts.conf文件的文件路徑,並在其末尾添加「zendctl.sh restart-apache」。簡單!夥計,你搖滾。 – pthurmond 2011-05-08 17:46:52