【发布时间】:2012-06-04 19:59:48
【问题描述】:
假设我有四个网络服务器,我需要将一行 HTML 添加到文件中。如您所见,我需要整数出现在 cluster=
之后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
如何做到这一点?提前致谢。
【问题讨论】:
假设我有四个网络服务器,我需要将一行 HTML 添加到文件中。如您所见,我需要整数出现在 cluster=
之后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
如何做到这一点?提前致谢。
【问题讨论】:
请注意${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 中,“引用用于删除某些字符或单词对 shell 的特殊含义”(bash 手册)。以下 to 行与 bash 相同:
'foo bar'
foo' 'bar
不需要引用字母字符 - 但它增强了可读性。在您的情况下,只能引用 " 和 < 等特殊字符。但是变量$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
基本上,只使用双引号,但你必须转义内部的。
【讨论】:
我认为应该这样做:
"echo \"<img src=beacon.gif?cluster=${i}>\" >> /var/www/index.html"
【讨论】: