2014-05-25 33 views
1

以下代碼從網站中提取所有域名,並將其從httrack數據流中設置爲$domain的值。如何將我的bash命令的變量值輸入到MySQL中?

domain=$(httrack --skeleton http://www.ilovefreestuff.com -V "cat \$0" | grep -iEo '[[:alnum:]-]+\.(com|net|org)') 

$域的值看起來像這樣...

googlesyndication.com facebook.com facebook.com ilovefreestuff.com ilovefreestuff.com facebook.com facebook.com ilovefreestuff.com ilovefreestuff.com peadig.com facebook.net ilovefreestuff.com w3.org ilovefreestuff.com yoast.com ilovefreestuff.com

我有我的數據庫設置和該命令完美的作品。

mysql -pPASSWORD -e "INSERT INTO domains.domains (domains) VALUES ($domain)」 

我想變$domain中的每個單獨的域插入到我的MySQL數據庫從httrack數據流的一個組合的命令行內的飛行。因此,在我瘋狂的腦海中,它應該看起來類似於下面的...不幸的是,這不起作用。我沒有輸出,只是另一個bash提示符。

domain=$(httrack --skeleton http://www.ilovefreestuff.com -V "cat \$0" | grep -iEo '[[:alnum:]-]+\.(com|net|org)') | mysql -pPASSWORD -e "INSERT INTO domains.domains (domains) VALUES ($domain)" 

我不知道如何將$domain變量切割成單獨的領域,所以我可以進入每個MySQL數據單元一個域,而我不能確定的結果到MySQL如何管鑑於命令是一個數據流。也許我需要一個for循環和一個剪切命令?

回答

1

也許我需要一個for循環和一個剪切命令?

你說的。它不會是一個班輪,但這應該工作:

domain=$(httrack --skeleton http://www.ilovefreestuff.com -V "cat \$0" | grep -iEo '[[:alnum:]-]+\.(com|net|org)') 

for single_domain in $domain 
do 
    mysql -pPASSWORD -e "INSERT INTO domains.domains (domains) VALUES ($single_domain)" 
done 
+1

是的,這項工作。這個解決方案的問題是httrack數據流非常大,httrack命令可能會在一些網站上運行幾個小時和/或幾天。有時它永遠不會完成。因此,我希望能夠實時導入域名。有沒有更好的方式來完成我想要的結果? – user3672303

+0

@ user3672303夠公平的。你基本上希望插入在每個域上實時發生並且不是批量的,正確的? – JakeGould

+0

是的,這是我正在尋找的解決方案。 – user3672303

相關問題