2014-02-19 74 views
2

我有一個用於我的本地WordPress的多站點安裝的hosts文件中的特定行,它看起來像這樣:在行結束hosts文件,使用添加地址的sed

127.0.0.1  localhost domain.dev site1.domain.dev site2.domain.dev 

我正在寫一個我可以運行的Shell腳本在我的Multisite上直接從終端上創建新的單個站點。我需要能夠在我運行此命令時將新記錄添加到我的/ etc/hosts文件中。在Shell文件中,我使用$site_addr作爲站點名稱的變量。然後您需要將.domain.dev添加到此結尾。我做了一個例子(沒有工作)使用的sed:

sed -i'.bak' '7i7 $site_addr.domain.dev' /etc/hosts 

從(上圖),我需要編輯我的主機文件YHE行是第7,因此在sed命令的7i7。我想在行尾添加新記錄。我還想創建一個備份主機文件,以防出現任何問題。

感謝您的幫助球員,希望我已經解釋的不夠好:)

+3

使用__double quotes__。 – devnull

回答

2

,如果這是該行7

sed -i '.bak' "7 s/$/ ${site_addr}.domain.dev/" /etc/hosts 

,但你可以使用模式匹配(比較安全)與

sed -i '.bak' "/127\.0\.0\.1/ s/$/ ${site_addr}.domain.dev/" /etc/hosts 

我要推薦也首先檢查域名是不是已經在

+0

第二個工作,但它只是插入'$ {site_addr} .domain.dev'而不是使用read -p命令在終端中分配的變量,例如'read -p「輸入站點地址:」site_addr「。如果我刪除括號('$ site_addr.domain.dev'),它只是插入。變量是否需要轉義或什麼? –

+1

正如@devnull在問題中提到的那樣...使用double qoutes ...變量不會在單引號內部擴展。 – twalberg

+0

抱歉,編輯時速度太快。由於$網站解釋蘇爾雙報價,對不起,我做了更正 – NeronLeVelu

相關問題