2012-06-04 24 views
3

假設我有四個web服務器,需要將一行HTML添加到文件中。正如你可以看到我需要的整數後集羣出現=在雙引號內執行本地bash變量

for i in 01 02 03 04; do ssh web.${i}.domain.com 'echo "<img src=beacon.gif?cluster=${i}>" >> /var/www/index.html'; done 

這又如何實現呢?提前致謝。

+0

圖片標籤在結尾?這是無效的HTML。 – pizza

回答

8

請之前和${i}後注意'

for i in 01 02 03 04; do 
    ssh web.${i}.domain.com 'echo "<img src=beacon.gif?cluster='${i}'>" >> /var/www/index.html' 
done 

編輯:有殼和字符串報價之間的巨大差異在編程語言中。在shell中,「引用用於刪除某些字符或文字對shell的特殊含義」(bash手冊)。以下行與bash相同:

'foo bar' 
foo' 'bar 

沒有必要引用字母字符 - 但它增強了可讀性。在你的情況下,只有特殊字符如"<必須被引用。但變量$i只包含數字,並且此替換可以安全地在引號之外完成。

+0

你是男人!我喜歡這個網站。 =) – jdorfman

+0

@nosid:我認爲這將是值得解釋發生了什麼。畢竟你最終做了一個字符串連接,你的解決方案與另外兩個不同。仍+1。 – 0xC0000022L

0

我想這應該這樣做:

"echo \"<img src=beacon.gif?cluster=${i}>\" >> /var/www/index.html" 
0
for i in 01 02 03 04 
do 
    ssh web.${i}.domain.com "echo \"<img src=beacon.gif?cluster=${i}>\" >> /var/www/index.html 
done 

基本上,只是使用雙引號,但你必須逃避內在的。