6

假设我有四个网络服务器,我需要将一行 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

如何实现?提前致谢。

4

3 回答 3

17

请注意'之前和之后${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

无需引用字母字符 - 但它增强了可读性。在您的情况下,只有特殊字符,例如"and<必须被引用。但是变量$i只包含数字,并且这种替换可以在引号之外安全地完成。

于 2012-06-04T20:02:26.593 回答
1

我认为应该这样做:

"echo \"<img src=beacon.gif?cluster=${i}>\" >> /var/www/index.html"
于 2012-06-04T20:02:09.643 回答
1
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

基本上,只需使用双引号,但您必须转义内部引号。

于 2012-06-04T20:05:23.657 回答